2015-05-27 3 views
0

Рассмотрим следующий расчетстрэнговой расчет по математике

3 * 20.9 

обычно она равна 62.7. Однако, когда я вычисляю его в javascript, вывод 62.699999999999996. И более того, я обнаружил, что 7, 11 также произведет неправильный ответ. Почему это идет не так и как правильно? Я думаю, что речь идет о двоичном коде?

demo

+0

Это из-за числами с плавающей запятой. http://stackoverflow.com/questions/1458633/how-to-deal-with-floating-point-number-precision-in-javascript –

+0

Дублирующий вопрос: [Является ли математика с плавающей запятой?] (http: // stackoverflow. com/questions/588004/is-floating-point-math-broken) – Roberto

+0

Неточность возникает из-за того, что 0,9 нельзя сопоставить с конечным двоичным числом с плавающей запятой. Вы можете использовать такие библиотеки, как BigDecimal, если это создает для вас проблему: https://github.com/dtrebbien/BigDecimal.js/ – Jaco

ответ

0

Чтобы сохранить только 1 десятичную. Используйте

(3*20.9).toFixed(1) 

Обновлено Fiddle

0

Попробуйте это:

Number((3*20.9).toFixed(1)); 
Смежные вопросы