Thread Runden auf zwei relevante Stellen?! (8 answers)
Opened by Ronnie at 2008-09-24 23:49

betterworld
 2008-09-26 01:39
#114938 #114938
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Ronnie+2008-09-24 23:29:12--
Etwas umständlich, aber es tut erstmal:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sub to_three_sig_digits {
    my $val = shift;
    if ($val =~ /^(0\.0*)(\d+)$/) {
        my $pre = $1;
        my $app = $2;
        return $val if length($app) <= 3;

        my $digits = substr($app, 0, 3);
        my $fourth = substr($app, 3, 1);
        $digits += 1 if $fourth >= 5;
        $val = $pre . $digits;
    } elsif ($val > 1) {
        $val = sprintf("%.2f", $val);
    } 
    return $val;
}

Das rundet mir jetzt 0.9999 zu 0.1000, das erscheint mir falsch.

Dass Du fuer Werte, die größer als 1 sind, immer auf zwei Nachkommastellen (also nicht nur zwei relevante Stellen) runden willst, wusste ich nicht. Aber ansonsten wuerde ich gerne fragen, was gegen meine (einfachere) Lösung von oben spricht.

View full thread Runden auf zwei relevante Stellen?!