phpbar.de logo

Mailinglisten-Archive

[php] Bug oder Rechenfehler?

[php] Bug oder Rechenfehler?

Sebastian Tobias Mendel genannt Mendelsohn lists at sebastianmendel.de
Fre Dez 12 10:07:13 CET 2003


Frank Hornung wrote:

> Hallo Liste.
> 
> Kann mir jemand erklären wie folgendes sein kann? Die Kommentare stellen 
> die Ausgabe dar.
> 
> <?php
> $a = 0.1;
> $b = 1;
> $Zahl = $a + $a + $a + $a + $a + $a + $a + $a + $a + $a;
> echo $Zahl . "\n"; // 1
> echo $Zahl - $b . "\n"; // -1.11022302463E-016
> echo $a + $a + $a + $a + $a + $a + $a + $a + $a + $a - $b . "\n"; // 
> -1.11022302463E-016
> echo ($a + $a + $a + $a + $a + $a + $a + $a + $a + $a) - $b . "\n"; // 
> -1.11022302463E-016
> echo (0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1) . "\n"; 
> // 1
> echo (0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1) - 1 . 
> "\n"; // -1.11022302463E-016
> ?>

ja das ist so bei Float-Zahlen, nicht nur in PHP, in anderen Sprachen 
auch, hängt von der Genauigkeit ab mit der Float-Zahlen behdanelt werden

wenn es dennw ichtig ist kannst du inder php.ini die genauigkeit für 
FLOAT-Werte erhöhen, weiß aber nciht ob es was bringt, habs noch nie 
probiert

; The number of significant digits displayed in floating point numbers.
precision    =  14

kann aber auch sein das sich dieser Wert nur auf die Darstellung 
auswirkt, ansonsten gibts da vielleicht auch Optionen beim übersetzen 
von PHP womit du die Genauigkeit erhöhen kannst.

-- 
Sebastian Mendel (www.sebastianmendel.de)

*www.warzonez.de* | www.tekkno4u.de | www.nofetish.com

php::bar PHP Wiki   -   Listenarchive