phpbar.de logo

Mailinglisten-Archive

[php] Modular - Multiplikation Problem

[php] Modular - Multiplikation Problem

Hans Egg hans.egg at swissonline.ch
Son Nov 22 08:12:54 CET 2009


Hallo Taibuca

Am 22.11.2009 um 01:01 schrieb Taibuca:

> Damit ich mehr Einblick bekomme habe ich mit settype gearbeitet,  
> Ergebnisse:
> 123.24 * 10 * 100 = 123239
> 123.24 * 100 * 10 = 123240
>
> Kann mir einer sagen woran das Problem liegt?

Umwandlung von Float zu Integer kann zu unerwarteten Resultaten  
führen, da die Floatoperationen nur mit begrenzter Genauigkeit  
durchgeführt werden können. Du erwartest, dass dein Floatwert 123.24  
intern so repräsentiert wird:
123.24000000000000000000000000000000000000
Es kann aber auch so:
123.24000000000000000000000000000000000001
oder so:
123.23999999999999999999999999999999999999
sein. Dies kannst du nicht voraussehen.

Du müsstest also dafür sorgen, dass deine Floatergebnisse immer etwas  
zu hoch sind. Z. B. durch Addition eines kleinen Wertes vor der  
impliziten oder expliziten Umwandlung in Integer.

http://php.net/manual/de/language.types.float.php

Gruß, Hans

php::bar PHP Wiki   -   Listenarchive