Калькулятор чисел с плавающей точкой

Преобразуйте десятичные числа в двоичное представление IEEE 754 и анализируйте точность.

Введите любое десятичное число и выберите формат точности, чтобы увидеть его двоичное представление IEEE 754, экспоненту, мантиссу и ошибку округления.

Калькулятор чисел с плавающей точкой
Преобразуйте десятичные числа в двоичное представление IEEE 754 и анализируйте точность.

Примеры

Нажмите любую кнопку ниже, чтобы загрузить известную числовую константу.

Десятичный вводТочность и примечанияЗначимость
3.141592653589793 (двойная)Знак: 0 · Exp: 1 · Точных цифр: ~15π — иррациональное число, сохранённое с крошечной ошибкой округления
0.1 (одинарная)Знак: 0 · Сохранено: 0.100000001490116 · Ошибка: ~1.49e-9Классический пример ошибки округления
2.718281828459045 (двойная)Знак: 0 · Exp: 1 · Точных цифр: ~15Число Эйлера e
1.23e-10 (одинарная)Знак: 0 · Нормализовано · Малое положительное значениеПроверка точности малых чисел в одинарном формате

О калькуляторе чисел с плавающей точкой

Калькулятор чисел с плавающей точкой преобразует десятичные числа в двоичное представление IEEE 754 и показывает полную побитовую разбивку, включая знак, экспоненту и мантиссу. Понимание представления с плавающей точкой — базовый навык для специалистов по компьютерным наукам, инженеров-программистов, численных аналитиков и всех, кто работает с компьютерами в задачах, где важна арифметическая точность. Стандарт IEEE 754, опубликованный Институтом инженеров электротехники и электроники в 1985 году и пересмотренный в 2008 году, определяет формат вычислений с плавающей точкой, используемый практически во всех современных процессорах и языках программирования, включая C, C++, Java, Python и JavaScript. Стандарт задаёт два основных формата: одинарную точность (32 бита) и двойную точность (64 бита). 32-битное число с одинарной точностью состоит из трёх полей: 1 бит знака, 8 бит экспоненты и 23 бита мантиссы (значащей части). Бит знака равен 0 для положительных чисел и 1 для отрицательных. Экспонента хранится со смещением 127, то есть истинная экспонента равна сохранённому значению минус 127, что позволяет представлять и положительные, и отрицательные экспоненты с помощью беззнаковых целых. Мантисса хранит дробную часть нормализованной значащей части, а неявная ведущая 1 (скрытый бит) даёт ещё один бит эффективной точности. 64-битное число с двойной точностью использует 1 бит знака, 11 бит экспоненты (смещение 1023) и 52 бита мантиссы, обеспечивая примерно 15–17 значащих десятичных цифр по сравнению с 6–7 цифрами у одинарной точности. Двойная точность — это тип с плавающей точкой по умолчанию в большинстве языков программирования. Ключевой вывод в том, что многие, на первый взгляд простые десятичные числа — например, 0.1 — нельзя представить точно в двоичной плавающей точке. Десятичное 0.1 в двоичном виде — это бесконечная периодическая дробь 0.0001100110011..., которую нужно усекать, чтобы уложить в 23 или 52 бита мантиссы. Это усечение вносит крошечную ошибку округления, поэтому 0.1 + 0.2 в большинстве языков не равно точно 0.3. Этот калькулятор показывает точное сохранённое значение и ошибку округления для любого введённого вами десятичного числа, что делает его ценным инструментом для отладки и обучения.

Как пользоваться этим калькулятором

  1. Выберите формат точности — одинарная (32 бита) для встроенных систем или GPU, двойная (64 бита) для научных вычислений.
  2. Введите любое десятичное число в поле ввода. Поддерживается научная нотация (например, 1.23e-10 или 6.022e23).
  3. Нажмите «Преобразовать», чтобы увидеть полную разбивку IEEE 754: бит знака, биты экспоненты (со смещённым и истинным значениями) и биты мантиссы.
  4. Проверьте сохранённое значение — точное десятичное число, которое использует компьютер, — и сравните его со своим вводом, чтобы увидеть ошибку округления.
  5. Используйте кнопки примеров, чтобы посмотреть, как известные константы вроде π, e или 0.1 представлены в двоичной плавающей точке.

Часто задаваемые вопросы

Почему 0.1 нельзя представить точно в формате с плавающей точкой?
Десятичное 0.1 в двоичной системе — это бесконечная периодическая дробь (0.000110011001100...), так же как 1/3 является повторяющейся десятичной дробью. Поскольку float имеет фиксированное число битов, дробь приходится усекать, и это вносит крошечную ошибку округления. Поэтому в большинстве языков 0.1 + 0.2 даёт примерно 0.30000000000000004, а не точно 0.3.
Что такое смещение в поле экспоненты?
Смещение — это фиксированный сдвиг, который добавляется к истинной экспоненте перед сохранением. Для одинарной точности используется смещение 127, для двойной — 1023. Если истинная экспонента равна 3, сохранённое значение для одинарной точности будет 3 + 127 = 130. Такая форма представления позволяет хранить экспоненты от −126 до +127 (одинарная) или от −1022 до +1023 (двойная), используя только беззнаковые целые.
Что такое скрытый бит?
Для нормализованных чисел с плавающей точкой ведущий бит мантиссы всегда равен 1 и не хранится — он подразумевается. Этот «скрытый» или «неявный» бит фактически даёт одинарной точности 24 бита точности мантиссы (23 сохранённых + 1 скрытый), а двойной точности — 53 бита (52 сохранённых + 1 скрытый). У денормализованных чисел около нуля подразумевается ведущий 0.
Какие специальные значения определяет IEEE 754?
IEEE 754 определяет несколько специальных значений: положительный и отрицательный ноль (различаются по биту знака), положительная и отрицательная бесконечность (все биты экспоненты установлены в 1, все биты мантиссы — в 0), а также NaN — Not a Number (все биты экспоненты в 1, и хотя бы один бит мантиссы в 1). Эти значения позволяют корректно обрабатывать переполнение, деление на ноль и неопределённые операции без аварийного завершения программ.
Когда использовать одинарную, а когда двойную точность?
Используйте двойную точность (64 бита) для научных вычислений, финансовых расчётов и любых задач, где требуется точность более 7 десятичных цифр. Используйте одинарную точность (32 бита), когда ограничены память или производительность — GPU намного быстрее обрабатывают числа одинарной точности, а мобильные и встроенные системы часто предпочитают 32 бита ради эффективности. Ошибки округления в одинарной точности могут существенно накапливаться в итеративных алгоритмах.
Как избежать ошибок точности с плавающей точкой в коде?
Для сравнения на равенство используйте допуск (epsilon), а не точное равенство: |a − b| < 1e-9 вместо a === b. Для финансовых расчётов рассмотрите целочисленную арифметику (например, храните суммы в центах) или специальную decimal-библиотеку. Для научных вычислений используйте алгоритмы компенсированного суммирования, такие как суммирование Кахана, чтобы уменьшить накопленные ошибки округления в больших суммах.