Час/числа
Конвертер IEEE 754 float
Десяткове число ↔ бінарне представлення IEEE 754 (одинарна чи подвійна точність) — знак, експонента, мантиса, особливі значення.
Комп’ютери зберігають дробові числа у двійковому вигляді за стандартом IEEE 754 — знак, експонента й мантиса, упаковані у фіксовану кількість бітів. Інструмент показує це представлення для будь-якого десяткового числа й розбирає його назад у число.
Як користуватися
- Число → біти: введіть десяткове число — отримаєте розбивку на знак, експоненту й мантису для одинарної (32-біт) чи подвійної (64-біт) точності.
- Біти → число: вставте бітове представлення, щоб отримати десяткове значення назад.
- Особливі значення (нескінченність, NaN, нуль зі знаком) розпізнаються й пояснюються окремо.
Типові сценарії
- Діагностика, чому 0.1 + 0.2 не дорівнює точно 0.3 у більшості мов програмування, — наочна демонстрація похибки округлення.
- Вивчення внутрішнього представлення float для розуміння меж точності при фінансових чи наукових обчисленнях.
- Розбір бінарного дампу чи мережевого пакета, де числа передаються у форматі IEEE 754.
Що варто памʼятати
Більшість десяткових дробів (наприклад, 0.1) не мають точного представлення у двійковій системі — звідси й типові похибки округлення в результатах обчислень.
Порівнювати числа з рухомою комою на точну рівність (===) ненадійно — замість цього перевіряють, чи різниця менша за невеликий поріг (епсилон).
Стаття про цей інструмент: IEEE 754: чому 0.1 + 0.2 не дорівнює 0.3 у коді
Часті запитання
У чому різниця між одинарною та подвійною точністю?
Одинарна точність (float, 32 біти) дає близько 7 десяткових знаків точності, подвійна (double, 64 біти) — близько 15-17. Подвійна точність використовується типом Number у JavaScript.
Чому деякі десяткові числа втрачають точність?
IEEE 754 зберігає число у двійковому вигляді, а багато десяткових дробів (наприклад, 0.1) не мають точного скінченного двійкового представлення — тому зберігається найближче можливе значення з крихітною похибкою округлення.
Що означають NaN, Infinity та -0?
NaN — результат некоректної операції на кшталт 0/0. Infinity/-Infinity з’являються при переповненні діапазону (наприклад, ділення на 0). А +0 і -0 — це два різні бітові представлення нуля зі знаком, які при цьому рівні як числа.
Що таке субнормальні (denormalized) числа?
Це особливий режим представлення чисел, надто малих за модулем для звичайного формату — неявна одиниця мантиси відкидається, що дозволяє поступово наближатися до нуля замість різкого стрибка, ціною втрати частини точності.
Як правильно порівнювати дробові числа замість перевірки на точну рівність?
Замість a === b перевіряють, чи різниця між числами менша за невелике порогове значення (епсилон): Math.abs(a - b) < 1e-9. Точна рівність практично ніколи не гарантована через похибки округлення.