Tempo/Numeri
Convertitore di float IEEE 754
Numero decimale ↔ rappresentazione binaria IEEE 754 (precisione singola o doppia) — segno, esponente, mantissa, valori speciali.
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).
Articolo su questo strumento: IEEE 754: perché 0.1 + 0.2 non è uguale a 0.3 nel codice
Domande frequenti
Qual è la differenza tra precisione singola e doppia?
La precisione singola (float, 32 bit) dà circa 7 cifre decimali di precisione, quella doppia (double, 64 bit) circa 15-17. Il tipo Number di JavaScript usa la precisione doppia.
Perché alcuni numeri decimali perdono precisione?
IEEE 754 memorizza i numeri in binario, e molte frazioni decimali (come 0.1) non hanno una rappresentazione binaria finita esatta — quindi viene memorizzato il valore più vicino possibile, con un piccolo errore di arrotondamento.
Cosa significano NaN, Infinity e -0?
NaN è il risultato di un'operazione non valida come 0/0. Infinity/-Infinity appaiono quando un valore supera l'intervallo rappresentabile (es. dividere per 0). +0 e -0 sono due rappresentazioni bit diverse dello zero con segno, che sono comunque uguali come numeri.
Cosa sono i numeri subnormali (denormalizzati)?
Una modalità di rappresentazione speciale per numeri con un valore assoluto troppo piccolo per il formato normale — l'1 implicito iniziale della mantissa viene omesso, permettendo di avvicinarsi gradualmente allo zero a costo di parte della precisione.
Come si confrontano correttamente i numeri frazionari invece di verificare l'uguaglianza esatta?
Invece di a === b, si verifica se la differenza tra i numeri è inferiore a una piccola soglia (epsilon): Math.abs(a - b) < 1e-9. L'uguaglianza esatta non è quasi mai garantita a causa degli errori di arrotondamento.