ID: 47418
User updated by: cu19 at gmx dot de
Reported By: cu19 at gmx dot de
-Status: Feedback
+Status: Open
Bug Type: *Math Functions
-Operating System: WinXP SP3
+Operating System: Win7
-PHP Version: 5.3CVS-2009-02-17 (CVS)
+PHP Version: 5.3.1
New Comment:
That's nothing different, but exactly the same problem as I described
from the beginning.
This is the function that I currently use as a workaround. It works
fine, but I would prefer php doing this itself...
function my_number_format ($number, $decimals=0, $dec_point=',',
$thousands_sep='.') {
$string = number_format($number, $decimals, $dec_point,
$thousands_sep);
$pos = strlen($string) - 1;
$increase = false;
while ($pos >= 0) {
if (($increase) and (is_numeric($string{$pos}))) {
$string{$pos} = chr(ord($string{$pos}) + 1);
$increase = false;
}
if ($string{$pos} == ':') {
$string{$pos} = '0';
$increase = true;
}
$pos--;
}
if ($increase)
$string = '1' . $string;
return $string;
}
Previous Comments:
------------------------------------------------------------------------
[2010-02-12 11:37:38] [email protected]
For the garbage problem, that's something else.
Can you provide a reproduce script (with data) please?
------------------------------------------------------------------------
[2010-02-12 11:31:41] tdietsche at comcast dot net
this sure IS a bug, scott_mac you need to wake up, if this is the best
that php handles floating point then it is worthless. In reading a value
of "19" from an excel spreadsheet via odbc, it formats it as "18.:0"
which is pure garbage and a bug to me. How can you defend that?
I can send my code if you want.
------------------------------------------------------------------------
[2009-02-25 01:00:01] 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".
------------------------------------------------------------------------
[2009-02-17 11:20:31] [email protected]
sc...@skinny [~] $ php -r 'var_dump(number_format(3.9, 2));'
string(4) "3.90"
Can't reproduce this on Linux.
------------------------------------------------------------------------
[2009-02-17 10:35:08] cu19 at gmx dot de
I don't think it's a problem with limited precision but rather about
the function itself. I think a float should be able to represent 3
digits without a problem. The hex representation of the float that is to
be formatted is 0x40799998, which equals to about 3.8999996.
I think number_format should be able to round this to '3.90' instead of
displaying it as '3.8:'
------------------------------------------------------------------------
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/47418
--
Edit this bug report at http://bugs.php.net/?id=47418&edit=1