Czas/Liczby
Konwerter float IEEE 754
Liczba dziesiętna ↔ reprezentacja binarna IEEE 754 (precyzja pojedyncza lub podwójna) — znak, wykładnik, mantysa, wartości specjalne.
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).
Artykuł o tym narzędziu: IEEE 754: dlaczego 0.1 + 0.2 nie równa się 0.3 w kodzie
Najczęstsze pytania
Jaka jest różnica między precyzją pojedynczą a podwójną?
Precyzja pojedyncza (float, 32 bity) daje około 7 cyfr dziesiętnych precyzji, podwójna (double, 64 bity) około 15-17. Typ Number w JavaScript używa precyzji podwójnej.
Dlaczego niektóre liczby dziesiętne tracą precyzję?
IEEE 754 przechowuje liczby binarnie, a wiele ułamków dziesiętnych (jak 0.1) nie ma dokładnej skończonej reprezentacji binarnej — więc przechowywana jest najbliższa możliwa wartość z niewielkim błędem zaokrąglenia.
Co oznaczają NaN, Infinity i -0?
NaN to wynik nieprawidłowej operacji, takiej jak 0/0. Infinity/-Infinity pojawiają się, gdy wartość przekracza możliwy do przedstawienia zakres (np. dzielenie przez 0). +0 i -0 to dwie różne reprezentacje bitowe zera ze znakiem, które są jednak równe jako liczby.
Czym są liczby subnormalne (zdenormalizowane)?
To specjalny tryb reprezentacji liczb, których wartość bezwzględna jest zbyt mała dla standardowego formatu — domyślna wiodąca jedynka mantysy jest pomijana, co pozwala na stopniowe zbliżanie się do zera kosztem części precyzji.
Jak poprawnie porównywać liczby ułamkowe zamiast sprawdzać dokładną równość?
Zamiast a === b sprawdza się, czy różnica między liczbami jest mniejsza niż niewielki próg (epsilon): Math.abs(a - b) < 1e-9. Dokładna równość niemal nigdy nie jest gwarantowana z powodu błędów zaokrąglenia.