JavaScript странная проблема округления - PullRequest
0 голосов
/ 26 августа 2009

У меня есть следующая функция javascript для округления:

function round(val, numberdigits){

    return Math.round(val*Math.pow(10, numberdigits))/Math.pow(10, numberdigits);

}

В большинстве случаев он выполняет свою работу хорошо, но в некоторых редких случаях возвращаемое значение имеет на одну цифру больше, что всегда равно 5.

Пример списка результатов с numberofdigits = 3:

5,329 - 5,081 - 4,271 - 3,271 - 2,1525 - 2,1375 - 2,1225 - 1,997 - 2,044 - 2,031 - 2,028

Может кто-нибудь объяснить это? Или, может быть, предоставит мне лучшую функцию округления, которая предотвращает эту проблему?

1 Ответ

1 голос
/ 26 августа 2009

Вы можете использовать встроенный метод toFixed для чисел:

https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Number/toFixed

Number(val.toFixed(numberofDigits))
...