Tempo/Números
Conversor de float IEEE 754
Número decimal ↔ representação binária IEEE 754 (precisão simples ou dupla) — sinal, expoente, mantissa, valores especiais.
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).
Artigo sobre esta ferramenta: IEEE 754: por que 0.1 + 0.2 não é igual a 0.3 no código
Perguntas frequentes
Qual a diferença entre precisão simples e dupla?
A precisão simples (float, 32 bits) dá cerca de 7 dígitos decimais de precisão, a dupla (double, 64 bits) dá cerca de 15-17. O tipo Number do JavaScript usa precisão dupla.
Por que alguns números decimais perdem precisão?
O IEEE 754 armazena números em binário, e muitas frações decimais (como 0.1) não têm uma representação binária finita exata — então o valor mais próximo possível é armazenado, com um pequeno erro de arredondamento.
O que significam NaN, Infinity e -0?
NaN é o resultado de uma operação inválida como 0/0. Infinity/-Infinity aparecem quando um valor ultrapassa o intervalo representável (ex.: dividir por 0). +0 e -0 são duas representações de bits diferentes do zero com sinal, que ainda assim são iguais como números.
O que são números subnormais (desnormalizados)?
Um modo especial de representação para números com magnitude pequena demais para o formato normal — o 1 implícito inicial da mantissa é descartado, permitindo se aproximar gradualmente de zero ao custo de parte da precisão.
Como comparar corretamente números fracionários em vez de verificar igualdade exata?
Em vez de a === b, verifica-se se a diferença entre os números é menor que um pequeno limiar (epsilon): Math.abs(a - b) < 1e-9. A igualdade exata quase nunca é garantida por causa de erros de arredondamento.