#22712 [Com]: number_format rounding differences for floats and strings

From: Date: Thu, 07 Aug 2003 18:23:19 +0000
Subject: #22712 [Com]: number_format rounding differences for floats and strings
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-45524@lists.php.net to get a copy of this message
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] derick@php.net 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

« previous php.bugs (#45524) next »