Время/числа

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

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


            

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

Common uses

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).

Статья об этом инструменте: 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, и как правило вычитания работает в римских цифрах.

Число прописью: зачем превращать цифры в слова

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