La mejor manera de visualizar cómo los números de punto flotante son inexactos es pensar en términos de valores de "punto flotante" de base 10. Se pueden utilizar hasta diez dígitos consecutivos distintos de cero y colocar el punto decimal de forma arbitraria. Ejemplos:
1234567890 // nine digits, decimal point placed to multiply 123456789 with 10
2345678901 // ten digits
12345.6789 // nine digits, decimal point placed to divide by 10000.
0.000000123456789 // nine digits, divide by 10000000
El resultado de cada operación debe encajar en el mismo esquema:
1234567890
+ 0.000000123456789 // two legal inputs
= 1234567890.000000123456789 // give an unrepresentable output
= 1234567890 // which loses the least significant digits
- 1234567890 // subtract one of the numbers again
= 0 // the digits are lost forever
Básicamente, se pueden representar años luz y milímetros, pero si se añade un milímetro a un año luz se obtiene un año luz. Si necesitas más precisión, utilizarías un entero lo suficientemente grande como para poder representar un año luz en milímetros.