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

From: Date: Mon, 12 Jul 2010 23:35:03 +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-152346@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
 User updated by:  brunog at micro-examples dot com
 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:

strangely it works fine on an older php version 
PHP Version => 5.1.6
gives 0.1 as expected


Previous Comments:
------------------------------------------------------------------------
[2010-07-13 01:16:39] rasmus@php.net

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.

------------------------------------------------------------------------
[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.

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


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


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


Thread (9 messages)

« previous php.bugs (#152346) next »