Tiempo/Números
Convertidor de float IEEE 754
Número decimal ↔ representación binaria IEEE 754 (precisión simple o doble) — signo, exponente, mantisa, valores especiales.
Computers store fractional numbers in binary under the IEEE 754 standard — a sign, an exponent, and a mantissa, packed into a fixed number of bits. This tool shows that representation for any decimal number and parses it back into a number.
How to use it
- Number → bits: enter a decimal number to get its breakdown into sign, exponent, and mantissa for single (32-bit) or double (64-bit) precision.
- Bits → number: paste a bit representation to get the decimal value back.
- Special values (infinity, NaN, signed zero) are recognized and explained separately.
Common uses
- Understanding why 0.1 + 0.2 doesn't exactly equal 0.3 in most programming languages — a concrete demonstration of rounding error.
- Studying float's internal representation to understand precision limits in financial or scientific calculations.
- Parsing a binary dump or network packet where numbers are transmitted in IEEE 754 format.
Things to keep in mind
Most decimal fractions (0.1, for example) have no exact binary representation — that's the root cause of the typical rounding errors seen in calculation results.
Comparing floating-point numbers for exact equality (===) is unreliable — check instead whether the difference is smaller than a small threshold (epsilon).
Artículo sobre esta herramienta: IEEE 754: por qué 0.1 + 0.2 no es igual a 0.3 en el código
Preguntas frecuentes
¿Cuál es la diferencia entre precisión simple y doble?
La precisión simple (float, 32 bits) da unos 7 dígitos decimales de precisión, la doble (double, 64 bits) da unos 15-17. El tipo Number de JavaScript usa precisión doble.
¿Por qué algunos números decimales pierden precisión?
IEEE 754 almacena números en binario, y muchas fracciones decimales (como 0.1) no tienen una representación binaria finita exacta — así que se almacena el valor más cercano posible, con un pequeño error de redondeo.
¿Qué significan NaN, Infinity y -0?
NaN es el resultado de una operación inválida como 0/0. Infinity/-Infinity aparecen cuando un valor desborda el rango representable (por ejemplo, dividir entre 0). +0 y -0 son dos representaciones de bits diferentes del cero con signo, que sin embargo son iguales como números.
¿Qué son los números subnormales (desnormalizados)?
Un modo de representación especial para números cuya magnitud es demasiado pequeña para el formato normal — se descarta el 1 implícito inicial de la mantisa, lo que permite acercarse gradualmente a cero a costa de parte de la precisión.
¿Cómo se comparan correctamente números fraccionarios en lugar de comprobar la igualdad exacta?
En vez de a === b, se comprueba si la diferencia entre los números es menor que un pequeño umbral (épsilon): Math.abs(a - b) < 1e-9. La igualdad exacta casi nunca está garantizada por los errores de redondeo.