Un número de coma flotante que contiene fracciones se almacena en bits para el signo, el exponente y la mantisa.
El formato IEEE 754 se divide en un bit de signo, un exponente y una mantisa. Un float de 32 bits es 1+8+23 bits; un double de 64 bits es 1+11+52 bits.
Incluso un número tan simple como 0.1 en decimal se convierte en una fracción que se repite infinitamente en binario, así que almacenarlo en bits finitos deja un pequeño error.
Los enteros que maneja esta herramienta son exactos gracias a BigInt, pero los valores de coma flotante son aproximaciones. Entender la disposición de los bits explica de dónde viene el error.