Как решить эту проблему неточных операторов модуля javascript? - PullRequest
0 голосов
/ 03 февраля 2020

Есть ли способ решить эту проблему? Я попробовал это на консоли, и результаты неверны, но технически результаты правильны

Эксперимент на консоли:

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

В C и C ++ оператор остатка принимает только целые операнды; в ECMAScript он также принимает операнды с плавающей точкой. Стандарты ECMA

Результат операции остатка с плавающей запятой, вычисляемой оператором%, не совпадает с операцией «остатка», определенной IEEE 754-2008.

Операция IEEE 754-2008 «остаток» вычисляет остаток от деления округления, а не усечения, поэтому его поведение не аналогично обычному оператору целочисленного остатка.

console.log(Math.floor(1%0.01)===0)

Вместо этого язык ECMAScript определяет% для операций с плавающей запятой, чтобы вести себя аналогично тому, как для оператора целочисленного остатка Java; это можно сравнить с библиотечной функцией C fmod.

0 голосов
/ 03 февраля 2020

Использовать Math.floor ()

console.log(Math.floor(1%0.01)===0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...