I только что прочитал в MDN, что один из причуд обработки JS чисел из-за всего, что является "двухточечным 64-битным форматом IEEE 754" означает, что когда вы делаете что-то вроде .2 + .1
, вы получаете 0.30000000000000004
(это то, что читает статья, но я получаю 0.29999999999999993
в Firefox). Поэтому:
(.2 + .1) * 10 == 3
имеет значение false
.
Кажется, это было бы очень проблематично. Итак, что можно сделать, чтобы избежать ошибок из-за неточности десятичных вычислений в JS?
Я заметил, что если вы сделаете 1.2 + 1.1
, вы получите правильный ответ. Так что вы должны избегать любой математики, которая включает в себя значения меньше 1? Потому что это кажется очень непрактичным. Существуют ли какие-либо другие опасности для математики в JS?
Edit:
Я понимаю, что многие десятичные дроби не могут быть сохранены как двоичные, но способ, которым сталкиваются большинство других языков, с которыми я столкнулся, связан с ошибкой (например, JS обрабатывает числа больше 1), кажется более интуитивным, поэтому я не привык к это, поэтому я хочу посмотреть, как другие программисты справляются с этими расчетами.