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
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Б