Thread Auf 2. Kommastelle runden? (31 answers)
Opened by Gast at 2008-05-07 02:31

topeg
 2008-05-08 22:55
#109467 #109467
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Alle Ansätze patzen irgendwo. Darum hatte ich mir mal eine eigene Funktion geschrieben.

Zum vergleich:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/perl

use strict;
use warnings;

my $s=2;
for (my $i = 0; $i <= (1/10**($s-1)); $i += (5/10**($s+1)))
{
 printf("%.".($s+1)."f  -->  sprintf:%.$s"."f  <>  round:%s   <>  int:%.$s"."f\n", 
        $i, $i, round($i,$s), int($i*(10**$s)+0.5)/(10**$s) );
}

sub round
{
 my $zahl=shift;
 my $stelle=shift;
 my $zz=$zahl+0;
 if($zz=~/^.+?\.\d{$stelle}/)
 {
  $zz=~s/^.+?\.\d{$stelle}/'0.'.('0'x$stelle)/e;
  $zahl+=$zz;
  $zahl=~s/^(.+?\.\d{$stelle}).*$/$1/;
 }
 $zahl=sprintf("%.$stelle"."f",$zahl);
 return $zahl;
}


Edit: falsche Version genommen, hatte einen Fehler... :-)

View full thread Auf 2. Kommastelle runden?