Diff between (a+b)/2 and a+(b-a)/2

Hunny Chawla
1 min readMar 2, 2022

--

Hello People,
Do you know what is the difference between (a+b)/2 and a+(b-a)/2?
if not, then don’t worry. Here I’m with a good explanation. Mathematically it seems to be the same.

But in programming, you might get weird results. Let’s take an example.

int a = 1000000000;
int b = 2000000000;
print((a+b)/2);
print(a+(b-a)/2);
Output:
-647483648
1500000000

As we can see that (a+b)/2 is giving me -647483648 and a+(b-a)/2 is giving me 1500000000 i.e correct.

Why is this happening?
Since integers can store a maximum value of 2³¹ -1 (2147483647) in java. After that, it will go to the negative side. If you will do a+b first it will cross the integer limit and it will give you a negative result. But if you will do b-a(will be smaller) first and divide it by 2 ( will get much smaller ) and then add a.

int a = 2000000000;
int b = 1000000000;
print(a+b);
print((a+b)/2);
print(b-a);
print((b-a)/2);
print(a+(b-a)/2);
Output:
-1294967296
-647483648
-1000000000
-500000000
1500000000

Conclusion:
We should always use a+(b-a)/2 instead of (a+b)/2.

If you like this article and found it interesting and knowledgeable, do hit the 👏 button and share it with your colleagues and friends.

--

--

Hunny Chawla