Edit report at http://bugs.php.net/bug.php?id=36008&edit=1

 ID:                 36008
 Updated by:         [email protected]
 Reported by:        adi at rogers dot com
 Summary:            incorrect round() & number_format() result
 Status:             No Feedback
 Type:               Bug
 Package:            Math related
 Operating System:   win32 only
 PHP Version:        5CVS-2006-06-14
 Block user comment: N

 New Comment:

PHP 5.2.5?  Upgrade!


Previous Comments:
------------------------------------------------------------------------
[2010-11-05 18:18:31] rinseout at gmail dot com

Similar problem on Vista home premium, PHP 5.2.5:



<?php

$numbers = array(0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008,
0.009);

foreach ($numbers as $number)

  print $number."->".number_format($number, 2, '.', ',')."<br>";

?>



0.001->0.00

0.002->0.00

0.003->0.00

0.004->0.00

0.005->0.01

0.006->0.01

0.007->0.01

0.008->0.01

0.009->0.01



as expected... however...



<?php

$numbers =
array(78.221,78.222,78.223,78.224,78.225,78.226,78.227,78.228,78.229);

foreach ($numbers as $number)

    print $number."->".number_format($number, 2, '.', ',')."<br>";



?>



78.221->78.22

78.222->78.22

78.223->78.22

78.224->78.22

78.225->78.22

78.226->78.23

78.227->78.23

78.228->78.23

78.229->78.23



?

78.225->78.22

?



no fiddling with the precision parameter enabled me to fix this.

------------------------------------------------------------------------
[2007-03-16 15:36:15] me at nospam dot com

I don't have a simpler test case, but in doing more testing, I found
that the rounding apparently just doesn't work. When you print out a
number that was rounded, it will appear correctly, but when you try to
do math functions with other similar numbers (ie 6.08 - 6.08), I will
get a remainder of like 2.039283e-16. However, setting the type to each
variable as a string made it work correctly.

------------------------------------------------------------------------
[2007-01-15 01:00:00] php-bugs at lists dot php dot net

No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".

------------------------------------------------------------------------
[2007-01-09 02:56:14] terrychangsharp at gmail dot com

I tested the code on PC + FreeBSD 6.1 + Apache 2.2.3 + PHP 5.2.0 and get
the same results. Actually, the seemingly coincident numbers $num and
$num_same_thing are in fact not the same thing: $num - $num_same_thing
yields -1.7763568394003E-015, not zero, so $num is smaller than 14.375
and round($num) is 14.37, not 14.38. Thus this "bug" is more like a
floating point error thing, not a real bug.

------------------------------------------------------------------------
[2007-01-07 04:07:29] [email protected]

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



------------------------------------------------------------------------


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/bug.php?id=36008


-- 
Edit this bug report at http://bugs.php.net/bug.php?id=36008&edit=1

Reply via email to