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:45:23 CET 2003


Frank Hornung wrote:

> Marco Döhring wrote:
> 
>> "Es ist ziemlich normal, dass einfache Dezimalzahlen wie 0.1 oder 0.7 
>> nicht in ihre internen
>> binären Entsprechungen konvertiert werden können, ohne einen kleinen 
>> Teil ihrer Genauigkeit
>> zu verlieren. Das kann zu verwirrenden Ergebnissen führen. So wird 
>> floor((0.1 + 0.7) * 10)
>> normalerweise 7 statt des erwarteten Wertes 8 zurück geben (als 
>> Ergebnis der internen
>> Entsprechung von 7.9999999999.... [...]"
>>  
>>
> Das erklärt das Phänomen. Und wie die Antwort von Sebastian Tobias 
> bereits erklärt ist das in (fast ?) allen Programmiersprachen zu finden. 
> Jedoch würde ich einen Wert wie -0.001 oder ähnliches erwarten.
> 
> 

man könnte auch wenig 'Casten' zwichendurch, was das ERgebniss 
verbessern dürfte ...

z.b.:

echo ((int) (0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1)) 
- 1 . "\n";

... keine Ahnung was bei rauskommt, nur so ne Idee ...

-- 
Sebastian Mendel (www.sebastianmendel.de)

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

php::bar PHP Wiki   -   Listenarchive