SobesLab логотип SobesLab

Ответ

Потому что числа в JavaScript (тип Number) хранятся в формате с плавающей точкой двойной точности (IEEE 754), и многие десятичные дроби не могут быть точно представлены в двоичной системе. Числа 0.1 и 0.2 в двоичной форме являются бесконечными дробями, при их хранении возникают небольшие погрешности. В итоге при сложении 0.1 + 0.2 получается значение, очень близкое к 0.3, но не строго равное ему (0.30000000000000004). Поэтому выражение 0.1 + 0.2 === 0.3 даст false. Это не ошибка JS, а ограничение представления вещественных чисел. Решение – округлять результат до нужного количества знаков или использовать тип BigInt для целых, или специальные библиотеки для точных десятичных вычислений.