Я пытаюсь использовать Eval() для калькулятора я делаю, но если когда я пытаюсь этоJavascript Eval возвращения неверное значение
console.log(eval("5.2-5"));
возвращает
0.20000000000000018
Почему это happening.Thank вы для своего времени.
Я пытаюсь использовать Eval() для калькулятора я делаю, но если когда я пытаюсь этоJavascript Eval возвращения неверное значение
console.log(eval("5.2-5"));
возвращает
0.20000000000000018
Почему это happening.Thank вы для своего времени.
Это связано с тем, как Javascript обрабатывает точность с плавающей запятой. Пожалуйста, см. How to deal with floating point number precision in JavaScript? для получения дополнительной информации
Короткий ответ: из-за того, как компьютеры обрабатывают поплавки, это означает, что точность с плавающей запятой фактически пробивается мимо определенной точки. Это то, что вы видите.
Javascript оценивает «5.2-2» значение числа с плавающей запятой, точность которого не гарантируется.
Если вам нужна фиксированная точность, вы можете использовать
console.log(eval("5.2-5.0").toFixed(2)):
[Javascript * делает * использование поплавков] (http://www.ecma-international.org/ecma-262/5.1/#sec-8.5) (удваивается, фактически). Он может использовать целые числа, но залог удваивается, если математика может привести к десятичному результату. – ssube
Действительно? Мне всегда казалось, что не существует такой вещи, как фактический float/double, и что движок всегда использовал целое число, а затем преобразовывался в то, что мы думаем как float/double? Но я мог легко ошибаться! – millerbr