Dr. Frankenstein Geschrieben 27. November 2002 Geschrieben 27. November 2002 das habe ich 14.0608333333333 wie bekomme ich daraus 14.06 ???? thx Benny Zitieren
kathi008 Geschrieben 27. November 2002 Geschrieben 27. November 2002 Hi, willst du die Zahlen löschen oder runden? Runden geht mit round($x,2); oder wenn auch bei ganzen Zahlen zweistellig: number_format($x,2) Das allerdings in PHP Zitieren
Jaraz Geschrieben 27. November 2002 Geschrieben 27. November 2002 Hallo, einfach abschneiden oder kaufmännisch runden? Abschneiden mit sprintf Kaufmännisch so: sub RUNDEN($,$) { # # Rundet einen Wert mit beliebig vielen Nachkommastellen KAUFMÄNNISCH(!) # auf einen Wert mit der angegebenen Zahl Nachkommastellen. # Kaufmännisch heißt im Beispiel mit zwei Stellen: # 3.45 bleibt 3.45 # aus 3.4510000000001 bis 3.4549999999999 wird 3,45 # aus 3.4550000000001 bis 3.4599999999999 wird 3,46 # # Außerdem werden Dezimalpunkte eingefügt und aus dem Dezimalpunkt wird ein # Komma gemacht. z.B. aus 1234.56 wird 1.234,56 bei 2 Stellen # # Die Nachkommastellen werden mit 0 aufgefüllt wenn durch den Wert die # angegebene Zahl nicht erreicht wird, z.B. aus 3.4 wird 3,400 bei 3 Stellen # Wird aufgerufen mit # $return = &RUNDEN($num,$prec); # wobei $num die zu rundende Zahl ist und $prec die Anzahl der zu rundenden # Nachkommastellen ist # # $return enthält dann den gerundeten Wert von $wert oder 0 bei Mißerfolg # ACHTUNG: # ======== # 1. Mit dem Rückgabewert dieser Routine läßt sich NICHT mehr RECHNEN! # 2. Arbeiten Sie nach Aufruf nicht mehr mit $_ im Hauptprogramm! # # Testanwendung: # ============== # my @num = ('-9999.9999','5555.5555','+.5','-.05','3.455','-3.455'); # printf "\n%10s | %-20s\n\n", 'Stellen', 'gerundet'; # foreach my $num (@num) { # print "Wert = $num\n"; # foreach my $prec (0..5) { # printf "%10s | %-20s\n",$prec,(&RUNDEN($num,$prec)); # } # } # # Mit bestem Dank an Mona Wuerz! # <news:200420010809092362%wuerz@yahoo.com> # my ($num, $prc) = @_; $num = eval {local $^W; $num+0 ? $num : 0}; # Toleranz! $prc = eval {local $^W; $prc+0 ? $prc : 0}; local $_ = reverse sprintf "%.*f", $prc, $prc > 0 ? $num : (sprintf "%.1f", $num * 10**($prc-1)) * 10**(1-$prc); s/(\d{3})(?=\d)(?!\d*\.)/$1,/g; # aus perlfaq5 tr/.,/,./; scalar reverse; } Gruß Jaraz Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.