2mantissa bits + 1 + 1
The +1 in the exponent (mantissa bits + 1) is because, if the mantissa contains abcdef...
the number it represents is actually 1.abcdef... × 2^e
, providing an extra implicit bit of precision.
Therefore, the first integer that cannot be accurately represented and will be rounded is:
For float
, 16,777,217 (224 + 1).
For double
, 9,007,199,254,740,993 (253 + 1).
>>> 9007199254740993.0
9007199254740992