It is a side effect of inexact arithmetic.
0.1 is an infinite length quantity in binary, like 1/3 is an infinite length decimal number.
You got math sawdust.
P.S.
AI2 might still support rational number data type arithmetic, if you substitute 1/10 for 0.1 everywhere. But some math operations result in floating point results , so avoid those.