Я только что прочитал в MDN , что одна из причуд JS обработки чисел из-за того, что все «Значения IEEE 754 в 64-битном формате двойной точности» заключаются в том, что когда вы делаете что-то вроде .2 + .1
, вы получаете 0,30000000000000004
(это то, что написано в статье, но Я получаю 0,29999999999999993
в Firefox). Следовательно:
(.2 + .1) * 10 == 3
оценивается как false
.
Это кажется очень проблематичным. Итак, что можно сделать, чтобы избежать ошибок из-за неточных десятичных вычислений в JS?
Я заметил, что если вы сделаете 1.2 + 1.1
, вы получите правильный ответ. Так следует ли вам просто избегать любых математических расчетов, в которых используются значения меньше 1? Потому что это кажется очень непрактичным. Есть ли какие-либо другие опасности при выполнении математических операций в JS?
Изменить:
Я понимаю, что многие десятичные дроби не могут быть сохранены как двоичные, но то, как большинство других языков, с которыми я сталкивался, похоже, справляется с ошибкой ( например, JS обрабатывает числа больше 1) кажется более интуитивным, поэтому я не привык к этому, поэтому я хочу посмотреть, как другие программисты справляются с этими вычислениями.