Edit report at https://bugs.php.net/bug.php?id=61580&edit=1
ID: 61580 Updated by: ras...@php.net Reported by: hesam at kolahan dot com Summary: wrong calculation of Modulus operator -Status: Open +Status: Not a bug Type: Bug Package: *Math Functions Operating System: CentOS PHP Version: 5.3.10 Block user comment: N Private report: N 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://www.floating-point-gui.de/ Thank you for your interest in PHP. . Previous Comments: ------------------------------------------------------------------------ [2012-03-31 12:32:38] hesam at kolahan dot com Description: ------------ The operator % can not calculate the following calculation: Wrong calculation: echo (16.49*100)%100; // prints 48 (should be 49) Right calculations: echo (13.49*100)%100; // prints 49 echo (14.49*100)%100; // prints 49 echo (15.49*100)%100; // prints 49 Test script: --------------- echo "A wrong calculation:"; echo "<br>(16.49*100)%100 = ".((16.49*100)%100)." *By PHP"; echo "<br>(16.49*100)%100 = 1649%100 = 49 *By Hand"; echo "<br><br>A right calculation:"; echo "<br>(15.49*100)%100 = ".((15.49*100)%100)." *By PHP"; echo "<br>(15.49*100)%100 = 1549%100 = 49 *By Hand"; Expected result: ---------------- All results should be the same value (by hand == by PHP) ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=61580&edit=1