-2

Adding two numbers in PHP getting unexpected results, such as this

$a=115.40;
$b=120.25;
$c=4.85;
echo ($a-$b)+$c;

results in

-5.3290705182008E-15

these numbers maybe integers or floats

6
  • what results were u expecting? Commented May 12, 2017 at 13:17
  • 4
    what does $a, $b and $c equal? What are they defined as Commented May 12, 2017 at 13:17
  • @ThisGuyHasTwoThumbs question updated Commented May 12, 2017 at 13:24
  • Due to the nature of how folating-points works in computing in general, they are not going to be exactly the result you expect. What you're seeing now is that the floating-point is about zero, but not exactly zero. You can format it to be zero, example: 3v4l.org/P70iL Commented May 12, 2017 at 13:24
  • 2
    sprintf('%6.3f',($a-$b)+$c); equals 0 Commented May 12, 2017 at 13:28

1 Answer 1

0

If you add floats, you can have solutions like that. Please check Manual:

Additionally, rational numbers that are exactly representable as floating point numbers in base 10, like 0.1 or 0.7, do not have an exact representation as floating point numbers in base 2, which is used internally, no matter the size of the mantissa. Hence, they cannot be converted into their internal binary counterparts without a small loss of precision. This can lead to confusing results: for example, floor((0.1+0.7)*10) will usually return 7 instead of the expected 8, since the internal representation will be something like 7.9999999999999991118....

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.