Bug #51396 [Com]: Math is Unreliable
| From: | john dot smith dot 1964 at gmail dot com | Date: | Wed, 14 Apr 2010 02:37:08 +0000 |
| Subject: | Bug #51396 [Com]: Math is Unreliable | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-149555@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=51396&edit=1
ID: 51396
Comment by: john dot smith dot 1964 at gmail dot com
Reported by: codeslinger at compsalot dot com
Summary: Math is Unreliable
Status: Feedback
Type: Bug
Package: Math related
Operating System: any
PHP Version: Irrelevant
New Comment:
The folk at Mandriva saw the same problem, figured it out and submitted
a patch to
PHP. I'm confused, because we're certainly still seeing the problem:
https://qa.mandriva.com/show_bug.cgi?id=37171
"In PHP on Mandriva 2008, some float to string conversions return "0.0:"
!!
In critical software, this can lead to major loss of data or
inconsistant
results."
Previous Comments:
------------------------------------------------------------------------
[2010-04-13 03:36:47] john dot smith dot 1964 at gmail dot com
I am seeing this bug consistently on standard Windows builds such as
5.2.4 and
5.2.13.
Our Server is: Windows NT 5.2 build 3790
Sample code is simple:
<? echo round(1451,2); ?>
On 5.2.4 it will result in "1450.:0" every time. On 5.2.4, other such
*funny*
values are
1701,1821,1951,2091,2101,2111,2121,2341,2351...
On 5.2.13,the numbers 1700 and 1900 consistently return "colon-ized"
results.
This is a
especially problematic, because 1700 and 1900 occur more frequently in
our
eCommerce app!
This issue is a real problem for us. It has been touched on (but not
solved) in
at least
Bugs 46376, 47716, 47304 and 47418.
------------------------------------------------------------------------
[2010-03-27 14:19:44] johannes@php.net
You are mentioned this version information:
php -v
PHP 5.2.4-2ubuntu5.10 with Suhosin-Patch 0.9.6.2 (cli) (built: Jan 6
2010 22:01:14)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
with Xdebug v2.0.3, Copyright (c) 2002-2007, by Derick Rethans
with Zend Debugger v5.2.15, Copyright (c) 1999-2008, by Zend
Technologies
This version is very different from the versions we provide.
a) Ubuntu adds some custom patches
b) Suhosin does major changes to the engine
c) Xdebug as well as Zend Debugger do changes to our executor unit.
All these components aren't supported here.
------------------------------------------------------------------------
[2010-03-27 12:50:58] codeslinger at compsalot dot com
One further note, in the repro above, it has to be exactly 16 nines. by
adding or removing a 9, it does not fail.
Also, as far as I know, all of the failures have been on 32bit Intel
cpu's. This probably will not fail on a 64bit cpu.
------------------------------------------------------------------------
[2010-03-27 12:22:12] codeslinger at compsalot dot com
well, it's hard to prove a negative.
but I have run a bunch of tests on the Linux snapshot and it appears to
be working fine. A VERY BIG THANKYOU
I did not find any windows snapshots, the latest is 5.2.13 from Feb 24.
based on the symptoms, my initial assumption was that this was caused by
some kind of array corruption, this turned out to be wrong. the actual
repro can be boiled down to one line... :-)
echo (string) (double) -0.09999999999999999;
With the caveat that there are other values which also trigger this.
------------------------------------------------------------------------
[2010-03-26 21:37:12] pajoye@php.net
Please try using this snapshot:
http://snaps.php.net/php5.2-latest.tar.gz
For Windows:
http://windows.php.net/snapshots/
------------------------------------------------------------------------
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=51396
--
Edit this bug report at http://bugs.php.net/bug.php?id=51396&edit=1