Вебсправочник
Справочник JavaScript

Number.EPSILON: точность чисел около единицы

Number.EPSILON описывает расстояние между единицей и следующим представимым числом Number. Он помогает объяснить ошибки двоичной арифметики, но не задаёт универсальный допуск для всех вычислений.

Назначение

Number.EPSILON описывает расстояние между единицей и следующим представимым числом Number. Он помогает объяснить ошибки двоичной арифметики, но не задаёт универсальный допуск для всех вычислений.

Как это работает

Сравнивайте абсолютную ошибку с допуском, выбранным по масштабу и задаче. В учебном примере числа близки к единице, поэтому EPSILON позволяет увидеть известное отличие суммы десятичных дробей от ожидаемого значения.

Пример

const sum = 0.1 + 0.2;
console.assert(sum !== 0.3);
console.assert(Math.abs(sum - 0.3) < Number.EPSILON);
console.assert(1 + Number.EPSILON > 1);
console.assert(1 + Number.EPSILON / 2 === 1);
console.log(sum, Number.EPSILON);

Что должно получиться

Точная проверка равенства суммы не проходит, а ошибка оказывается меньше EPSILON. Прибавление половины EPSILON к единице округляется обратно к единице в данном случае.

Граница применения и частая ошибка

Для больших величин шаг представления больше; для прикладных измерений допуск часто определяется точностью исходных данных. Не добавляйте EPSILON ко всем числам перед округлением как универсальное исправление. Точная десятичная арифметика требует отдельного представления.

Самостоятельная проверка

Повторите сравнение при другом масштабе чисел и выберите абсолютный и относительный допуск явно. Проверьте поведение около нуля. Запишите, почему допустимая ошибка должна следовать требованиям задачи, а не только константе языка.

Пример JavaScript проверяйте в собственном учебном файле или консоли своего проекта. Встроенная песочница справочника JavaScript не выполняет. Успешное выполнение в одной среде не гарантирует поддержку метода во всех браузерах.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.