ID: 22712 Comment by: q1234562001 at mail dot ru Reported By: hpdl at oscommerce dot com Status: Bogus Bug Type: Math related Operating System: Linux PHP Version: 4.3.1 New Comment:
The script: <?php echo number_format(63.745, 2, '.', "") ."<br>"; echo number_format(64.745, 2, '.', "") ."<br>"; ?> Result: 63.74 64.75 Previous Comments: ------------------------------------------------------------------------ [2003-03-14 14:49:53] [EMAIL PROTECTED] It's a float/maths problem, nothing to do with PHP specific. Derick ------------------------------------------------------------------------ [2003-03-14 14:32:09] hpdl at oscommerce dot com We at osCommerce are witnessing rounding problems in our taxes logic and have made a reproduceable script below. number_format() produces different rounding results when floats or strings are passed to the function. <?php $price = '100.0000'; // Canada GST 7% $price = '1.07' * $price; // Canada/Quebec PST 7.5% $price = '1.075' * $price; echo '$price: ' . $price . '<br>' . "\n" . 'number_format($price, 2): ' . number_format($price, 2) . '<br>' . "\n" . 'number_format((string)$price, 2): ' . number_format((string)$price, 2); ?> The correct results are produced when the string value is passed. The float value produces incorrect results. I do not know if this is a problem with the number_format function, or if it is due to floats/mathematics. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=22712&edit=1