AW: linux-l: runden in Perl
Steffen Dettmer
steffen at dett.de
Do Nov 16 22:20:37 CET 2000
* Heinz W. Pahlke wrote on Thu, Nov 16, 2000 at 21:19 +0100:
>
> On 16-Nov-2000 Jens Dreger wrote:
>
> > Also: kein Bug, sondern Absicht.
>
> Und was macht man, wenn man kaufmaennisch rechnen will?
Dann baut man eben was um POSIX's "floor" oder "ceil", wie im
Thread schon erwähnt. Hier mal Beispielcode:
---------------------------------------------------
#!/usr/local/bin/perl
sub round($$)
{
use POSIX;
my $val = shift; #input value to round
my $power = 10**shift; #digits after comma
my $sign = $val / abs($val);
return (int(($val * $power) + $sign*0.5))/$power;
}
print
round(-4,-1)," " , round(-5,-1)," " , round(-6,-1),"\n",
round(-0.4,0), " ", round(-0.5,0)," " , round(-0.6,0),"\n" ,
round(-0.04,1)," " , round(-0.05,1)," " , round(-0.06,1),"\n",
print
round(4,-1)," " , round(5,-1)," " , round(6,-1),"\n",
round(0.4,0), " ", round(0.5,0)," " , round(0.6,0),"\n" ,
round(0.04,1)," " , round(0.05,1)," " , round(0.06,1),"\n",
---------------------------------------------------
produziert:
0 10 10
0 1 1
0 0.1 0.1
0 -10 -10
0 -1 -1
0 -0.1 -0.1
oki,
Steffen
--
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.
Mehr Informationen über die Mailingliste linux-l