Час/числа

Конвертер IEEE 754 float

Десяткове число ↔ бінарне представлення IEEE 754 (одинарна чи подвійна точність) — знак, експонента, мантиса, особливі значення.


            

Комп’ютери зберігають дробові числа у двійковому вигляді за стандартом 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. Точна рівність практично ніколи не гарантована через похибки округлення.

Статті: Час/числа

Unix-час: чому комп'ютери рахують час від 1970 року

Чому саме 1 січня 1970 року стало точкою відліку часу для більшості комп'ютерних систем.

Cron-вирази: як розшифрувати розклад запуску завдань

Як розшифрувати вираз на кшталт */15 * * * * і зрозуміти, коли саме запуститься завдання.

Системи числення: навіщо потрібні двійкова, вісімкова й шістнадцяткова

Чому колір #FF5733 у CSS записаний шістнадцятковими цифрами, а не десятковими.

Побітові операції: як AND, OR і XOR працюють на рівні бітів

Чим побітовий AND відрізняється від логічного, і навіщо взагалі оперувати окремими бітами числа.

Різниця між датами: чому підрахунок днів складніший, ніж здається

Чому наївне віднімання дат може дати неправильний результат через високосні роки.

Розрахунок віку: чому це не просте віднімання років

Чому просте віднімання років народження може дати вік на одиницю більший за реальний.

Часові пояси: чому UTC — це не те саме, що GMT

Чому UTC не змінюється двічі на рік, а час у Лондоні (GMT/BST) — змінюється.

Розрахунок тривалості: як правильно підсумовувати години, хвилини й секунди

Чому при додаванні хвилин і секунд потрібно "переносити" залишок у наступний розряд, як при десятковому додаванні.

ISO 8601 Duration: як записати тривалість у стандартному форматі

Чому запис PT1H30M означає «1 година 30 хвилин», а не «1 хвилина 30 годин».

Номер тижня: чому в різних країнах тижні рахують по-різному

Чому 1 січня іноді належить до 52-го чи 53-го тижня попереднього року за стандартом ISO 8601.

Римські цифри: як побудована система без нуля й розрядів

Чому IV означає 4, а не 6, і як правило віднімання працює в римських цифрах.

Число прописом: навіщо перетворювати цифри на слова

Чому в банківських документах суму пишуть і цифрами, і словами одночасно.