Spot on. I would add to this explanation that the real confusion comes from the fact that in most languages when you write `0.1`, it doesn&#x27;t mean 0.1 = 1&#x2F;10 – instead it means the closest number to 0.1 of the form n&#x2F;2^k where n &lt; 2^53. Namely 0.1000000000000000055511151231257827021181583404541015625, which we can represent in decimal because 2 divides 10. And, of course, the illusion that `0.1` is actually 0.1 is supported by the great efforts [1] made to print floating-point values with the least number of digits necessary to reproduce them, so `0.1` still <i>looks</i> like 0.1 when you print it even though it isn&#x27;t.<p>[1] <a href="http:&#x2F;&#x2F;www.cs.tufts.edu&#x2F;~nr&#x2F;cs257&#x2F;archive&#x2F;florian-loitsch&#x2F;printf.pdf" rel="nofollow">http:&#x2F;&#x2F;www.cs.tufts.edu&#x2F;~nr&#x2F;cs257&#x2F;archive&#x2F;florian-loitsch&#x2F;pr...</a>