BUG in PHP5.0.4

Moin, werte Gemeinde,

ich hab gerade einen Totalanfall mit Stundenlanger Fehlersuche in meinem Script hinter mir und habe dann entdeckt, dass der Fehler nicht im Script, sondern im PHP5 Modul liegt.

Ich benutze Xampp für Windows 1.4.13 und PHP 5.0.4 auf XP Pro.

Eine kleine Rechenoperation hat mich an den Rand des Wahnsinns getrieben.

10.01 - 10 = 0.0099999999999998

Ich bitte alle darum das Prüfscript mal durchlaufen zu lassen und zu posten, ob und unter welcher Umgebung der gleiche Fehler auftritt.

$a = 10.01;
$b = 10;
$c = $a - $b;
echo „$a - $b = $c“;
?>

Oder ist das am Ende ein schon bekanntes Ding?

Danke und Gruß
widecrypt

:wink:
Das ist kein Fehler von PHP.
=>http://www.ulthryvasse.de/db72.html

Verwende einfach http://at.php.net/manual/en/function.round.php bzw. eine andere Funktion zum Runden bei der Ausgabe.

Hallo

Ich benutze Xampp für Windows 1.4.13 und PHP 5.0.4 auf XP Pro.

Eine kleine Rechenoperation hat mich an den Rand des Wahnsinns
getrieben.

10.01 - 10 = 0.0099999999999998

Hier bei 4.3.4 erscheint:

 10.01 - 10 = 0.01

Grüße

CMБ

Hallo,

10.01 - 10 = 0.0099999999999998

Dass das mit der Binärdarstellung der Fließkommazahlen zusammenhängt, wurde hoffentlich schon mal erwähnt.

Abhilfe schafft richtiges Runden oder in manchen Fällen die Verwendung von Festkommazahlen (k.A. ob PHP das unterstützt). Manche Programmiersprachen erleichtern einem den Umgang durch automatisches Runden:

$ perl -e 'print 10.01-10.0, $/'
0.00999999999999979
$ echo '10.01 - 10.0'|octave -q
ans = 0.0100000
$ echo '10.01 - 10.0'|bc -q 
.01

Grüße,
Moritz

Hallo,

$ perl -e ‚print 10.01-10.0, $/‘
0.00999999999999979

$\> 
 perl -e 'printf "%g", 10.01 - 10'
 0.01
 perl -e 'print 10.01 - 10'
 0.00999999999999979

 PHP 5.0.4
 echo 10.01 - 10 
 0.0099999999999998

 PHP 4.3.4
 echo 10.01 - 10 
 0.01

Sieht trotzdem so aus, als hätte sich
bei PHP 4 ==> 5 das darunterliegende
Konvertierungsverfahren (andere C-Funktion?)
geändert.

CMБ

Grüße

CMБ