JavaScript метод toFixed(2) дает неожиданное значение

#javascript #google-apps-script

#javascript #google-apps-script

Вопрос:

У меня проблема с вычислением .toFixed(2) и надеюсь, что кто-нибудь может дать мне альтернативный способ или идею. Расчет основан на взносах социального страхования Германии. У меня общая сумма 3700. Эту сумму нужно умножить на 1,525% и, наконец, округлить сумму до двух десятичных чисел. Вот мой код:

 var _PVGross = 3700;
var _charge = 1.525;
result = ((_PVGross / 100) * _charge).toFixed(2);
 

вычисление вручную:

3700 / 100 = 37

37 * 1.525 = 56.425

Итак, приведенный выше код возвращает мне 56,42. Но по немецкому законодательству оно должно быть 56,43, потому что третья цифра — пять. Это означает округление. Я попробовал несколько ручных тестов с https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_tofixed2 но каждый раз, если за точкой будет только три цифры или нуля, я получу неверный результат.

Другой пример:

если у меня есть это количество / код:

 56.42500000001.toFixed(2)
 

результат будет 56,43. И теперь у меня заканчиваются идеи. Я использую скрипт Google Apps для этого вычисления. У кого-нибудь еще есть эта проблема и / или идеи?

Ответ №1:

Вы пробовали что-то подобное Math.round((56.425 Number.EPSILON) * 100) / 100 ?

Ответ №2:

Вы можете округлить его, используя Math.pow

 var _PVGross = 3700;
var _charge = 1.525;
var res = 56.425;
result= Math.round(res * 100) / 100);