How this works. A float stores
(−1)sign × 1.mantissa × 2exponent−bias. The leading 1 is
implied rather than stored, which buys one extra bit of precision — except for subnormals, where
the exponent field is zero and the leading digit is 0 instead. Because the mantissa is binary,
most decimal fractions cannot be represented at all: 0.1 is stored as the nearest available
binary fraction, which is why
Exact stored value above is not 0.1. That difference is the
entire reason
0.1 + 0.2 !== 0.3. Rounding here is round-half-to-even, as the
standard specifies, and the error is computed as an exact rational difference rather than in
floating point.
This value is subnormal, infinite or NaN — precision is reduced or absent, and arithmetic on it may not behave as you expect.