Рассмотрим следующий расчетстрэнговой расчет по математике
3 * 20.9
обычно она равна 62.7
. Однако, когда я вычисляю его в javascript, вывод 62.699999999999996
. И более того, я обнаружил, что 7
, 11
также произведет неправильный ответ. Почему это идет не так и как правильно? Я думаю, что речь идет о двоичном коде?
Это из-за числами с плавающей запятой. http://stackoverflow.com/questions/1458633/how-to-deal-with-floating-point-number-precision-in-javascript –
Дублирующий вопрос: [Является ли математика с плавающей запятой?] (http: // stackoverflow. com/questions/588004/is-floating-point-math-broken) – Roberto
Неточность возникает из-за того, что 0,9 нельзя сопоставить с конечным двоичным числом с плавающей запятой. Вы можете использовать такие библиотеки, как BigDecimal, если это создает для вас проблему: https://github.com/dtrebbien/BigDecimal.js/ – Jaco