Jörg Wittemeier: cgi kann nicht rechnen

Beitrag lesen

Nachtrag:

probier mal:

$x=595.95*3;
$y=int(x*100+0.5)/100;

print $y/100;

Damit wird die Rundung auf 2 Nachkommastellen erzwungen.
Die Rundung sollte jedoch immer erst unmittelbar vor der Ausgabe
(oder in der Ausgabe) geschehen.

Viele Grüße

Andreas

P.S.: 0.95 (dezimal) wird im Binärsystem zu einem nicht-abbrechenden BINÄR-Bruch
        (Asche über mein Haupt...).

Hallo Andreas !

Danke für die kompetente Antwort. Hat mir insofern weitergeholfen,
daß ich den Fehler nicht mehr in der Server-Konfiguration gesucht habe.
Das mit der Rundung funktionierte auch nicht.
Kam irgenetwas .99999999990123 herraus.

Hier meine Lösung:

$ALL=529.95*3;
$ALL=$ALL+0.001;
$ALL=substr($ALL,0,index("$ALL",".")+3);
print "$ALL";

Die 0.001 addiere ich für die xxx.999999999990123 Ergebnisse.
Das Ganze hat den netten Nebeneffekt, daß die Ausgabe immer
mit 2 Stellen hinter dem Komma erfolgt.

Gruß
Jörg