#40802 [Bgs]: number_format does not fill rounded number with zeros
ID: 40802
User updated by: taco at procurios dot nl
Reported By: taco at procurios dot nl
Status: Bogus
Bug Type: *Math Functions
Operating System: Linux 2.6.17-11-386
PHP Version: 5.2.1
New Comment:
Nevermind. Forgot to look at the manual, the number argument should be
a float...
Previous Comments:
------------------------------------------------------------------------
[2007-03-14 10:32:09] taco at procurios dot nl
I agree that this is normal behaviour for floats, but the same bug
appears when you would pass a string. Does number_format cast strings
to floats internally?
------------------------------------------------------------------------
[2007-03-14 10:09:47] tony2001@php.net
Floating point values have a limited precision. Hence a value might
not have the same string representation after any processing. That also
includes writing a floating point value in your script and directly
printing it without any mathematical operations.
If you would like to know more about "floats" and what IEEE
754 is read this:
http://docs.sun.com/source/806-3568/ncg_goldberg.html
Thank you for your interest in PHP.
------------------------------------------------------------------------
[2007-03-14 10:07:19] taco at procurios dot nl
Description:
------------
Since there is no way to tell number_format to use a specified decimal
separator and thousands separator without rounding the number I wanted
to set the amount of decimals bigger than the given amount of decimals
to strip the trailing zeros afterwards.
However, the string number_format returned did not only add zeros to
the given number:
$ php -v
PHP 5.2.1-0.dotdeb.1 with Suhosin-Patch 0.9.6.2 (cli) (built: Feb 9
2007 04:46:32)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
$ php -r "echo number_format(2.333333, 60, ',', '.');"
2,333333000000000101437080957111902534961700439453125000000000
Reproduce code:
---------------
echo number_format(2.333333, 60, ',', '.');
Expected result:
----------------
2,333333000000000000000000000000000000000000000000000000000000
Actual result:
--------------
2,333333000000000101437080957111902534961700439453125000000000
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=40802&edit=1
Thread (4 messages)