I do not agree that the calculation is wrong. IMHO, only your perception of it is wrong because Excel only formats up to the first 15 significant digits (rounded), which is an arbitrary choice.
Most articles on the subject, including the article cited by Jeganarayanan and the more-dispositive article that I cite, contain the same misinformation that contributes to users' misunderstanding, IMHO, namely statements like: Excel stores 15 digits of precision; and calculation errros are caused by the IEEE specification of storing only 15 significant digits of precision. In Jeganarayanan's reference, Jessica Liu compounds the misinformation by writing: 1234567890123456 cannot be exactly.
If Excel "stores 15 digits of precision", you would expect that 13502.15, 13472.75, and 13502.15 - 13472.75 = 29.4 can be represented exactly, since all of those numbers have much fewer than 15 digits.
But in fact, none of those statements is correct. The following statements are.
- The IEEE specification for 64-bit binary floating-point does not require storing 15 significant digits of precision.
In fact, the standard never mentions 15 digits; and it does not mandate "storing"
[sic] any number of decimal digit.
Instead, the standard says: it requires at least
17 significant decimal digits to represent all possible binary values and to convert between decimal and binary values without any loss of precision.
MSFT knows that. That is why Excel uses up to 17, not 15, significant decimal digits to represent numeric values in XML files, which is how Excel stores "xlsx" and "xlsm" files. (The "xlsx" or "xlsm" file is a compressed zip file that includes the XML
files.)
Note: Just because we can represent all possible binary values with up to 17 significant decimal digits, that does not mean that those 17 significant digits represent the binary value exactly. I will demonstrate that below.
- Most decimal fractions (and many very large integers) cannot be represented exactly in 64-bit binary floating-point.
Possible TMI.... Put another way: even if a value is a rational number in decimal, most decimal fractions are not rational numbers in binary.
- The estimation of a particular decimal fraction varies, depending on the magnitude of the numeric value.
Possible TMI.... That is because numeric values are represented as the sum of 53 consecutive powers of 2 ("bits"). The largest power of 2 depends, in part, on the magnitude of the value. The larger the magnitude of the value, the fewer "bits" remain to
represent the decimal fraction. So, we might lose precision.
- Using 64-bit binary floating-point, Excel can represent all integers between -2^53 and +2^53 exactly, which is the
16-digit value 9,007,199,254,740,992.
Note that that is significantly larger than Jessica Lui's example of 1,234,567,890,123,456.
- However, when we enter a number, Excel interprets only the first 15 significant digits, replacing any digits to the right with zero. So if we type 9007199254740992, Excel does indeed store only
9007199254740990.
FYI, VBA does not have that limitation for type Double. So we can enter type Doublenumbers with greater precision in VBA.
- Moreover, Excel formats only the first 15 significant digits (rounded), replacing any digits to the right with zero.
(FYI, VBA has the same limitation for type Double.)
For example, if we enter the formula =9007199254740990+2 into A1, Excel will
store the result exactly (9007199254740992). But it will
display the result as 9007199254740990. We can confirm that by noting that SUM(A1,-9007199254740990) results in 2, not zero.
I like to use the following example to demonstrate #2 and #3: IF(10.01 - 10 = 0.01, TRUE) returns FALSE(!).
The reason becomes apparent when we look at the exact decimal representation of the values on the right:
10.01 10.0099999999999,997868371792719699442386627197265625
10.01 - 10 0.00999999999999978,68371792719699442386627197265625
0.01 0.0100000000000000,0020816681711721685132943093776702880859375
(I use period for the decimal point and comma to demarcate the first 15 significant digits.)
Note the different approximation 0.01 in 10.01 and 0.01. The first is less precise. When we subtract the integer part, we are left with the less-precise approximation
So you see: the result of 10.01 - 10 might be unexpected, but the calculation is not wrong.
Likewise, the exact decimal representation of your values on the right is:

The result of A1-A2 is correct, given the less-precise approximation of 0.15 in A1.
Possible TMI.... Just for grins, compare with the following result:
0.15-0.75+(13502-13472) 29.3999999999999,9857891452847979962825775146484375
0.15-0.75 can be calculated at full precision, and we lose precision only when we add the integer result of 13502-13472. It is the same loss of precision in the constant 29.4.
Of course, I am not suggesting that as a workaround. The point is: the order of operations can make a difference.