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

 ID:               47304
 Comment by:       xiaobo dot bob at gmail dot com
 Reported by:      lennartvdd at mailordersolutions dot nl
 Summary:          typecast of numeric string to float produces strange
                   result
 Status:           Assigned
 Type:             Bug
 Package:          Scripting Engine problem
 Operating System: win32 only
 PHP Version:      5.2.9
 Assigned To:      pajoye

 New Comment:

2010-06-14 09:30:45 BST



I have reproduced this bug, but after changed some setting: change the
"precision" and "serialize_precision" setting in php.ini, and even
changed back, or maybe after i added the printf("%.2f\n",$v2), the echo
$v2 is correctted, but the printf result is always 16.:

 finally, i wrote such a script:



for ($i=0; $i<400; $i++)

{

echo $i."-";

printf("%f\n",$i);

}



and found there're 8 number have this bug, they are:

17

19

29

39

170

190

290

390



I'm using windows xp in a virtualbox virtual machine, and a delphi
component named php4delphi, the php version is 5.2.13


Previous Comments:
------------------------------------------------------------------------
[2009-12-23 07:22:24] p dot klein at letsmakesense dot de

I experienced this issue using the number_format() and round()-function.
My example page displays items in a price list and prices like '17' or
'19' (only even numbers) were converted to '16.:' and '18.:'. The weird
thing was that every fourth reload the prices were converted correctly
to '17,00' and '19,00'. The situation improved after I calculated the
floats with BCMath functions. Now three out of four conversions were
correct.



Next thing I tried was to play with the precision setting of php. After
changing the value to '13' the conversion problem disappeared. But even
after changing it back to the default setting the issue hasn't occurred
anymore. 



I don't trust the situation. The bug probably still exists, but it's
very hard to reproduce. We didn't have the bug while we used version
5.2.0, but it happened with 5.2.12 and 5.3.1.



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

Our system:



Windows Server 2003 R2, Standard Edition, Service Pack 2

Intel Core 2 CPU 6600 @ 2.40 GHz, 3,99 GB RAM

PHP Version 5.2.12

------------------------------------------------------------------------
[2009-09-28 09:58:07] egorich at junik dot lv

Seems that it fixed with rolling back to php 5.2.5 to me.

------------------------------------------------------------------------
[2009-06-22 16:21:28] ciudadsatan at hotmail dot com

The bug in Linux happens with

    echo 0.15-0.05;

------------------------------------------------------------------------
[2009-06-22 03:47:55] ang dot chin dot han at gmail dot com

Originally from:



http://www.reddit.com/r/programming/comments/8tqpj/phpwtf_an_annoyance_

will_be_posted_each_day/c0aeg66



In short, in a Ubuntu Hardy 32 bit (64bit unaffected), 5.2.4 (with 

Ubuntu patches) a simple



  echo 1.0-0.5;



produces "0.0:" instead of "0.1" like in other platforms.



Not sure if it's the same bug as this is casting from float to string.

------------------------------------------------------------------------
[2009-06-08 09:47:15] egorich at junik dot lv

So, any solutions to this? 

The problem also arises when i try to convert string to double, like:

$amount = double($amount);

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


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=47304


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

Reply via email to