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
