Bug #75558 [Opn->Nab]: Float to integer conversion
Edit report at https://bugs.php.net/bug.php?id=75558&edit=1
ID: 75558
Updated by: nikic@php.net
Reported by: cyrille dot php at giquello dot fr
Summary: Float to integer conversion
-Status: Open
+Status: Not a bug
Type: Bug
Package: *General Issues
Operating System: Ubuntu 16.04
PHP Version: 7.1.11
Block user comment: N
Private report: N
New Comment:
I have no idea what you tried in Python and Java, but it was clearly something else, because these
are standard floating point semantics that are consistent across all languages. I've just
checked (int)(103.24 * 6 * 10**2) on Python 3.6 and it indeed gives 61943, as expected.
If you don't want truncating conversion ("round down" for positive numbers),
don't use integer casts, or ensure that the floating point number represents an exact integer
beforehand, by using round().
Previous Comments:
------------------------------------------------------------------------
[2017-11-23 10:59:28] spam2 at rhsoft dot net
that's indeed a joke
php > echo 103.24 * 6 * 10**2;
61944
php > echo round(( 103.24 * 6 * 10**2));
61944
php > echo (int)( 103.24 * 6 * 10**2);
61943
------------------------------------------------------------------------
[2017-11-23 10:59:00] cyrille dot php at giquello dot fr
Another test script:
Test script:
---------------
php -r '$a=( 103.24*6*10**2); echo
$a,"=",intval($a),"=",intval(61944.0),"\n";'
Expected result:
----------------
61944=61944=61944
Actual result:
--------------
61944=61943=61944
------------------------------------------------------------------------
[2017-11-23 10:50:23] cyrille dot php at giquello dot fr
Description:
------------
Hi,
I've read the warning about float on documentation http://php.net/manual/fr/language.types.float.php
but for simple computing it should be nice if Php return value like other languages (Python &
Java).
The computing (int)( 103.24 * 6 * 10**2) should return 61944 nor 61943.
I've done the same with Java & Python (converting float result to integer) and get the
right result: 61944
Test script:
---------------
php -r 'echo (int)( 103.24 * 6 * 10**2),"\n";'
Expected result:
----------------
61944
Actual result:
--------------
61943
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=75558&edit=1
Thread (9 messages)