The number 2.01, presented in binary format:
b10.00000010100011111100001010001111110000101000111111000010100011111100...
The computer uses only a finite number of digits to store floating point values, but a binary representation of 2.01 requires an infinite number of digits; as a result, it is rounded to the nearest representable value:
b10.000000101000111111000010100011111100001010001111110
In decimal terms, this number is exactly:
2.0099999999999997868371792719699442386627197265625
When you print it, it is rounded a second time to seventeen decimal digits, giving:
2.0099999999999998
source share