Сначала напишите демо, чтобы воспроизвести проблему. Я использую среду онлайн -тестирования JS [Open]
Перезаписать функцию DisplayNum ()
функция DisplayNum () {var num = 22,77; alert (num + 10);}Нажав результаты кнопки «Показать». Покажите 32.7699999999996 n десятичных децималей.
Не все цифры будут иметь это явление, за исключением 22,99 2.777, кажется, что эти цифры не являются особенными.
Я проверил некоторую информацию. Один из них - ошибка в расчете JS с плавающей запятой, а другой связан с окончательным преобразованием компьютера в бинарную расчет. Однако, почему не у всех десятичных децималов это явление? Я не знаю сейчас. Я пойду глубже, если у меня будет время.
Сейчас есть два решения. Первый-использовать метод JS .tofixed (n) для непосредственного получения децималов N-цифры. Я лично думаю, что у этого метода будут некоторые проблемы в точности данных. Если требования к точности данных не высоки, вы можете использовать их. Второй метод - написать свой собственный метод работы JS.
Ниже приведена пользовательская функция сложения. Добавление этого метода будет избежать вышеуказанных проблем.
Функция addnum (num1, num2) {var sq1, sq2, m; try {sq1 = num1.tostring (). split (".") [1] .length;} catch (e) {sq1 = 0;} try {sq2 = num2.toString (). Catch (e) {sq2 = 0;} m = math.pow (10, math.max (sq1, sq2)); return (num1 * m + num2 * m) / m;}Конечно, это также может быть написано как бдительность ((num * 3+10 * 3) /3); Таким образом, в n не будет больше десятичных десятиц.
оповещение ((num * 3+10 * 3) /3); и предупреждение (num+10); отличаются от оповещения (num+10); Эти два способа написания компьютеров для преобразования в бинарные операции на нижнем слое. Возможно, это причина вышеуказанных проблем.
Приведенная выше статья о десятичной десятичной жизни JS, рассчитывающая десятичную точку и отображение нескольких десятичных десятичных видов - это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.