ID:               43572
 Updated by:       [EMAIL PROTECTED]
 Reported By:      csaba at alum dot mit dot edu
-Status:           Open
+Status:           Bogus
 Bug Type:         Math related
 Operating System: Win XP
 PHP Version:      5.2.5
 New Comment:

Floating point values have a limited precision. Hence a value might 
not have the same string representation after any processing. That also
includes writing a floating point value in your script and directly 
printing it without any mathematical operations.

If you would like to know more about "floats" and what IEEE
754 is read this:
http://docs.sun.com/source/806-3568/ncg_goldberg.html
 
Thank you for your interest in PHP.

The value that you expect (0) is obtained using float precision. (In
C)
PHP uses double, and with this type fmod() returns 1.3.


Previous Comments:
------------------------------------------------------------------------

[2007-12-12 10:51:53] csaba at alum dot mit dot edu

Just to be clear:
fmod(9.75,1.625) => 0
Expected, and works correctly for me.

php -n -r "echo fmod(6.5, 1.3);"
=> 1.3
which is not correct (0 is correct)

Csaba

Note that on windows systems, double quotes are needed (because of the
space) instead of the single quotes.

------------------------------------------------------------------------

[2007-12-12 00:55:39] csaba at alum dot mit dot edu

Description:
------------
if $div evenly divides $num, fmod($num, $div) still returns a value not
equal to 0 for almost all decimal $div, where the decimal portion is not
n/2^k for some n and k.

e.g.
fmod(9.75,1.625) => 0 because .125 is 5/2^3


Expected result:
----------------
I expect to see fmod return 0 when the 1st argument is a multiple of
the 2nd.

Csaba Gabor from Vienna

Actual result:
--------------
fmod(6.5, 1.3) => 1.3
which is incorrect


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=43572&edit=1

Reply via email to