2016-03-11 5 views

ответ

0

Это связано с тем, как Javascript обрабатывает точность с плавающей запятой. Пожалуйста, см. How to deal with floating point number precision in JavaScript? для получения дополнительной информации

Короткий ответ: из-за того, как компьютеры обрабатывают поплавки, это означает, что точность с плавающей запятой фактически пробивается мимо определенной точки. Это то, что вы видите.

+0

[Javascript * делает * использование поплавков] (http://www.ecma-international.org/ecma-262/5.1/#sec-8.5) (удваивается, фактически). Он может использовать целые числа, но залог удваивается, если математика может привести к десятичному результату. – ssube

+0

Действительно? Мне всегда казалось, что не существует такой вещи, как фактический float/double, и что движок всегда использовал целое число, а затем преобразовывался в то, что мы думаем как float/double? Но я мог легко ошибаться! – millerbr

0

Javascript оценивает «5.2-2» значение числа с плавающей запятой, точность которого не гарантируется.
Если вам нужна фиксированная точность, вы можете использовать

console.log(eval("5.2-5.0").toFixed(2)):