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

 ID:                 63074
 Updated by:         ras...@php.net
 Reported by:        berthonneau dot olivier at gmail dot com
 Summary:            Intval doesn't return exact value
-Status:             Open
+Status:             Not a bug
 Type:               Bug
 Package:            Math related
 Operating System:   Windows Server 2008 and Ubuntu
 PHP Version:        5.3.16
 Block user comment: N
 Private report:     N

 New Comment:

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://www.floating-point-gui.de/

Thank you for your interest in PHP.




Previous Comments:
------------------------------------------------------------------------
[2012-09-12 16:10:45] berthonneau dot olivier at gmail dot com

Description:
------------
Hi!

I found a strange bug today.
I have a float variable which contains 3876.0000, I want to pass it through the 
intval() function.
I know it's already an integer because there is no decimals, but the strange 
thing 
is that intval() don't return 3876 but 3875.

I experience the same thing with explicite cast.

Test script:
---------------
$tmp = 1370 * 1.15;
echo $tmp . "<br />"; // echo 3875.5
$tmp += 0.5;
echo $tmp . "<br />"; // echo 3876
$tmp = intval($tmp);
echo "tmp= ". $tmp . "<br />"; // echo 3875

========

Same thing with an explicite cast: $tmp = (int)$tmp;

Expected result:
----------------
I expect that the last echo output 3876

Actual result:
--------------
The last echo output 3875 instead of 3876.


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



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

Reply via email to