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