#36008 [Opn-Fbk]: incorrect round() number_format() result
ID: 36008 Updated by: [EMAIL PROTECTED] Reported By: adi at rogers dot com -Status: Open +Status: Feedback Bug Type: Math related Operating System: win32 only PHP Version: 5CVS-2006-06-14 New Comment: Please try using this CVS snapshot: http://snaps.php.net/php5.2-latest.tar.gz For Windows: http://snaps.php.net/win32/php5.2-win32-latest.zip Previous Comments: [2006-10-31 00:39:37] adi at rogers dot com Aww well it's too late for me to bug it for Windows Vista as we've entered Release Candidate 2 :( I'll test this again on IIS7 with the final version of Vista... [2006-10-30 13:30:58] dave at koales dot co dot uk I think this is a Windows vs others thing. I have the same rounding error using PHP 5.0.5 on Windows XP SP2. The same problem does not exist on my webhost, who use PHP 4.3.9 and Redhat Linux (need any more detail). The code I used was: echo Correct VAT = . round( 0.525, 2 ) . \r\n; echo Wrong VAT = . round( 3 * ( 17.5 / 100.0 ), 2 ) . \r\n; Outputs 0.53 for each on webhost (under Linux) and 0.52 for the second test under Windows (0.53 for the first test). I've also had very bizarre rounding errors with MySQL. The rounding error came and went depending on how the calculation was constructed! [2006-10-10 21:44:21] adi at rogers dot com Amen to that ;) [2006-10-10 07:45:36] troy20 at mail dot ru Code: for ($i = 1.075;$i = 1.975;$i=$i+0.1) {echo round($i,2);} Result: 1.08, 1.18, 1.28, 1.38 But if echo round(1.275,2); echo round(1.275*100); we have 1.27 and 127. Another same example: for ($i = 1.075;$i = 20.975;$i=$i+0.1) {echo round($i,2);} Win2003 + Apache 2.0.59 + php 5.1.6 [2006-06-14 22:11:53] adi at rogers dot com Regretfully, the same output: 5.2.0-dev Wrong: 14.37 Wrong: 14.37 'Magically' correct: 14.38 'Magically' correct: 14.38 Converted to string and is now correct: 14.38 Converted to string and is now correct: 14.38 The 32 precision results are also the same [as the ones on January 15]. The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/36008 -- Edit this bug report at http://bugs.php.net/?id=36008edit=1
#36008 [Opn-Fbk]: incorrect round() number_format() result
ID: 36008 Updated by: [EMAIL PROTECTED] Reported By: adi at rogers dot com -Status: Open +Status: Feedback Bug Type: Math related Operating System: win32 only PHP Version: 5.1.2 New Comment: Please try using this CVS snapshot: http://snaps.php.net/php5.2-latest.tar.gz For Windows: http://snaps.php.net/win32/php5.2-win32-latest.zip Previous Comments: [2006-01-15 06:40:25] adi at rogers dot com Oh, and as I had suspected, here is the value of $num with 32 precision: 14.3749998 With 12 as the precision, it is: 14.375 [2006-01-15 06:34:25] adi at rogers dot com As requested, the exact output with 32 as the precision: Wrong: 14.369 Wrong: 14.37 'Magically' correct: 14.381 'Magically' correct: 14.38 Converted to string and is now correct: 14.369 Converted to string and is now correct: 14.37 [2006-01-14 16:06:25] [EMAIL PROTECTED] What EXACTLY is the output when you set precision to 32? [2006-01-14 15:55:07] adi at rogers dot com I just confirmed this issue to still exist on the following systems: Windows XP Pro SP2 [IIS 5.1 ISAPI] (PHP 5.1.2 / php.ini precision: 12) Windows XP Pro SP2 [IIS 5.1 CGI] (PHP 5.1.0RC1 / php.ini precision: 12) Windows Server 2003 Enterprise x64 Edition SP1 [IIS 6.0 CGI] (PHP 5.1.2 / php.ini precision: 12) PHP was installed on all three systems manually (not using the installer). Hope that helps in isolating this issue. [2006-01-14 11:16:57] [EMAIL PROTECTED] Output on my machine using default precision 12: Wrong: 14.38 Wrong: 14.38 'Magically' correct: 14.38 'Magically' correct: 14.38 Converted to string and is now correct: 14.38 Converted to string and is now correct: 14.38 And it works exactly like it's supposed to. round() rounds up to 2 decimals. Same goes for number_format(). 14.375 == 14.38 but 14.374 == 14.37 There is no bug here, and please, don't bother reopening this yet again. The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/36008 -- Edit this bug report at http://bugs.php.net/?id=36008edit=1