Hi there, If I perform the following calculation in Excel: =100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000+50 I get: 100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 Shouldn't the answer be: 100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,050?
No, the answer will be constrained by the number of bits used by the computer to represent the numbers, and you've got WAY more than it can handle, so the 50 gets dropped as a rounding error.
According to http://en.wikipedia.org/wiki/Numeric_precision_in_Microsoft_Excel numbers in Excel are limited to 15 significant figures. So 100,000,000,000,000+50 works, but 100,000,000,000,000,000+50 doesn't.
Lots of other programs can do that. Computer Algebra Systems, like Mathematica, Sage, Maxima, Reduce, Maple... all do that. http://en.wikipedia.org/wiki/Computer_algebra_system Some calculator programs, like bc and many others do that. https://www.google.com/search?q=big+integer+calculator&oq=big+integer+calculator Many programming languages, like Icon, Java... do that, don't be fooled by those who think 64 bits is big. https://www.google.com/search?q=programming+language+big+integer&oq=programming+language+big+integer
64 bits is chump change for deep calculations. You need a monster computer to process calculations beyond a few hundred decimal points. That is why numerical analysis takes so long and is so incredibly expensive.
Do you really think that's going to have any effect on the fact that the larger number is WAY bigger than Excel can handle as an integer?
Sometimes it does help to prevent loss of precision by putting the smaller number first, when there is a huge range of magnitude difference between two operands.