#44223 [Opn->Bgs]: round() sometimes returns value in E notation

From: Date: Thu, 13 Mar 2008 12:14:34 +0000
Subject: #44223 [Opn->Bgs]: round() sometimes returns value in E notation
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-123265@lists.php.net to get a copy of this message
ID: 44223 Updated by: jani@php.net Reported By: kjohnson at zootweb dot com -Status: Open +Status: Bogus Bug Type: Math related Operating System: Linux 2.6.20.2 PHP Version: 5.2.5 New Comment: I don't see any bug here, it's perfectly normal to _print_ it that way since those are floats. Previous Comments: ------------------------------------------------------------------------ [2008-03-06 18:44:14] a dot u dot savchuk at gmail dot com bug is not fixed yet in php-5.2.5 $ ./sapi/cli/php ./test1.php | grep 'E+' 1.2E+6 1.4E+6 2.3E+6 2.4E+6 2.8E+6 3.3E+6 3.4E+6 3.8E+6 4.1E+6 4.3E+6 4.6E+6 4.8E+6 5.1E+6 5.3E+6 5.6E+6 5.8E+6 6.1E+6 6.3E+6 6.6E+6 6.8E+6 7.1E+6 7.3E+6 7.6E+6 7.8E+6 8.1E+6 8.2E+6 8.6E+6 8.7E+6 9.1E+6 9.2E+6 9.6E+6 9.7E+6 test script is: $ cat ./test1.php <?php for( $tmp = 0, $i = 0; $i < 100; $i++ ) { $tmp += 100000; echo round($tmp),"\n"; } ?> php version is: $ ./sapi/cli/php -v PHP 5.2.5 (cli) (built: Mar 2 2008 02:27:40) (DEBUG) Copyright (c) 1997-2007 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies ------------------------------------------------------------------------ [2008-02-25 16:08:01] kjohnson at zootweb dot com Thanks for your response! Sorry, I am not able to change my PHP version, so I can't try the CVS snapshot. ------------------------------------------------------------------------ [2008-02-24 19:51:06] jani@php.net Please try using this CVS snapshot: http://snaps.php.net/php5.2-latest.tar.gz For Windows (zip): http://snaps.php.net/win32/php5.2-win32-latest.zip For Windows (installer): http://snaps.php.net/win32/php5.2-win32-installer-latest.msi ------------------------------------------------------------------------ [2008-02-22 22:20:33] kjohnson at zootweb dot com Description: ------------ For certain values, not necessarily large numbers, round() returns the value in exponential notation instead of the usual decimal format. Some of these "special" values are 1200000, 1400000, 2300000, 2400000. It seems to be just certain multiples of 100,000. Generate your own list with the code below. I suggest you start with input of: Start = 1000000 Increment = 100000 Iterations = 100 to 200 Reproduce code: --------------- <html><head><title></title></head><body> <form method="post" action="<?=$_SERVER['PHP_SELF']?>"> <!-- some recommended values for next fields: 1000000, 100000, 200 --> Start value:<input type="text" name="start"> &nbsp;&nbsp; Increment: <input type="text" name="increment"> &nbsp;&nbsp; Iterations: <input type="text" name="iterations"> <input type="submit"> </form> <? if(count($_POST)) { echo "<p>Start: ", $_POST['start'], "; Increment: ", $_POST['increment'], "</p>"; $tmp = $_POST['start']; echo round($tmp),"<br>"; for($i = 0; $i < $_POST['iterations']; $i++ ) { $tmp += $_POST['increment']; echo round($tmp),"<br>"; } } ?> </body></html> Expected result: ---------------- All values to be returned in standard decimal format, e.g., "1200000". Actual result: -------------- Certain values are returned in exponential format, e.g., "1.2E+6". ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=44223&edit=1

« previous php.bugs (#123265) next »