Bug #52324 [Bgs]: bad result when adding two floats

From: Date: Mon, 12 Jul 2010 23:16:45 +0000
Subject: Bug #52324 [Bgs]: bad result when adding two floats
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-152344@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=52324&edit=1

 ID:               52324
 Updated by:       rasmus@php.net
 Reported by:      brunog at micro-examples dot com
 Summary:          bad result when adding two floats
 Status:           Bogus
 Type:             Bug
 Package:          *General Issues
 Operating System: ubuntu
 PHP Version:      5.2.14RC2

 New Comment:

It doesn't show 0.0 on any PHP version I have access to.  No idea about
your 
5.2.4.  That's from 3 years ago.  I don't have anything that old on any
of my 
machines.


Previous Comments:
------------------------------------------------------------------------
[2010-07-13 01:10:58] brunog at micro-examples dot com

maybe, but 0.0: is not a correct value at all as an add result, whatever
floating point accuracy is
0.09 + 0.02 gives 0.11 as expected, neither 0.109999999999 nor 0.::

------------------------------------------------------------------------
[2010-07-13 01:04:36] rasmus@php.net

That is the "correct" value according to how computers store floating
point 
values.  If you want it accurate to 2 decimal places, round() it to 2
decimal 
places.  Read the big red warning box here: 
http://php.net/manual/en/language.types.float.php

------------------------------------------------------------------------
[2010-07-13 00:58:02] brunog at micro-examples dot com

thank you for the quick reply
adding ini_set('precision',16); does not give correct result value :
0.09999999999999999

is it an echo() bug ?
0.0: is lexicographically before 0.1
0.09 + 0.01 = 0.0: is correct ascii saying

------------------------------------------------------------------------
[2010-07-13 00:39:21] rasmus@php.net

prints 0.1 for me.  You are probably hitting a floating point limitation
combined 
with a precision setting problem in your environment.  Try adding 
ini_set('precision',16); to the top of your script and you will see.

------------------------------------------------------------------------
[2010-07-13 00:35:04] brunog at micro-examples dot com

Description:
------------
PHP Version => 5.2.4-2ubuntu5.10
can you please consider this short code ?

Test script:
---------------
<?php
        $f1 = 0.09 ;
        $f2 = 0.01 ;
        $tot = $f1 + $f2 ;
        echo("$tot\n") ;
?>


Expected result:
----------------
0.1


Actual result:
--------------
0.0:


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



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


Thread (9 messages)

« previous php.bugs (#152344) next »