Edit report at http://bugs.php.net/bug.php?id=51320&edit=1
ID: 51320 Updated by: johan...@php.net Reported by: woody dot gilk at gmail dot com Summary: Modulus Fails with the number 2.32 -Status: Open +Status: Bogus Type: Bug Package: *General Issues Operating System: OSX, Linux PHP Version: Irrelevant 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. . Previous Comments: ------------------------------------------------------------------------ [2010-03-18 10:55:21] woody dot gilk at gmail dot com Sorry, the test script $number value should be "2.32" not "3.32", the improper value of "31" is only reported for "2.32", no other numbers. ------------------------------------------------------------------------ [2010-03-18 10:53:26] woody dot gilk at gmail dot com Description: ------------ Tested on the following PHP versions: 5.3.2 (OSX) 5.2.5 (Linux, Codepad.org) 5.2.4 (Ubuntu) The following script improperly reports the modulus as "31" instead of "32", but doesn't seem to happen with any other numbers. Test script: --------------- <?php $number = 3.32; echo ($number * 100) % 100; Expected result: ---------------- 32 Actual result: -------------- 31 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=51320&edit=1