Veröffentlicht 27. November 200222 j das habe ich 14.0608333333333 wie bekomme ich daraus 14.06 ???? thx Benny
27. November 200222 j 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
27. November 200222 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.