#24054 [Csd]: Assignment Operateors (*=)
ID: 24054
Updated by: rasmus@php.net
Reported By: spam at oops dot org
Status: Closed
Bug Type: Scripting Engine problem
Operating System: Linux
PHP Version: 4.3.2
New Comment:
http://news.php.net/article.php?group=php.zend-engine.cvs&article=1344
Previous Comments:
------------------------------------------------------------------------
[2003-06-06 09:27:55] spam at oops dot org
I want patch to solve this problem on 4.3.2 :-)
------------------------------------------------------------------------
[2003-06-06 06:49:33] sas@php.net
Fixed in CVS
------------------------------------------------------------------------
[2003-06-06 06:10:42] sniper@php.net
PHP 4.2.3:
-----------
float(10010000000)
float(10010000000)
PHP 4.3.1:
----------
float(1.001E+10)
float(1.001E+10)
PHP 4.3.2:
----------
float(1421485473408)
float(1.001E+10)
I've added a test case for this and this has to be fixed before 4.3.3.
------------------------------------------------------------------------
[2003-06-06 05:20:57] edink@php.net
It seems that something goes wrong when casting to float on integer
overflow.
$ php -r '$i=10000000; $i*=1001; var_dump($i);'
float(1421485473408)
$ php -r '$i=10000000*1001; var_dump$i);'
float(1.001E+10)
------------------------------------------------------------------------
[2003-06-06 04:25:26] spam at oops dot org
4.3.2 has assignment operateors problem.
<?php
$i = 10000000;
$i *= 1001;
echo $i;
?>
upper code returns "1421485473408".
but
<?php
$i = 10000000;
$i = $i * 1001;
echo $i;
?>
upper code is success return "10010000000".
*= operator has not always problem.
if about bigger than 1000000000, problem is occured. :-)
P.S
sorry for my poor english.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=24054&edit=1
Thread (6 messages)