Округление результата деления в Javascript

Я выполняю следующую операцию в Javascript:

0.0030 / 0.031

Как округлить результат до произвольного числа разрядов? Какое максимальное число может содержать var?


person Community    schedule 02.09.2009    source источник
comment
e ближе к w, чем o к n на большинстве клавиатур   -  person Rex M    schedule 03.09.2009
comment
Теперь это актуальный вопрос.   -  person Andy Mikula    schedule 03.09.2009


Ответы (3)


Современные браузеры должны поддерживать метод под названием toFixed(). Вот пример из Интернета:

// Example: toFixed(2) when the number has no decimal places
// It will add trailing zeros
var num = 10;
var result = num.toFixed(2); // result will equal 10.00

// Example: toFixed(3) when the number has decimal places
// It will round to the thousandths place
num = 930.9805;
result = num.toFixed(3); // result will equal 930.981

toPrecision() также может быть вам полезен, на этой странице есть еще один отличный пример.


Для старых браузеров вы можете сделать это вручную, используя Math.round. Math.round() будет округлено до ближайшего целого числа. Чтобы добиться десятичной точности, вам нужно немного манипулировать своими числами:

  1. Multiply the original number by 10^x (10 to the power of x), where x is the number of decimal places you want.
    • Apply Math.round()
    • Разделить на 10^x

Итак, чтобы округлить 5,11111111 до трех знаков после запятой, вы должны сделать это:

var result=Math.round(5.111111*1000)/1000  //returns 5.111
person zombat    schedule 02.09.2009
comment
Не забывайте, что реализация JScript toFixed довольно несовершенна - jibbering.com/faq/#formatNumber - person kangax; 03.09.2009

Наибольшее положительное конечное значение числового типа приблизительно равно 1,7976931348623157 * 10308. ECMAScript-262, 3-е изд. также определяет Number.MAX_VALUE, который содержит это значение.

person kangax    schedule 03.09.2009

Чтобы ответить на вопросы Джага:

  1. Используйте метод toFixed(). Остерегаться; он возвращает строку, а не число.
  2. Пятнадцать, может, шестнадцать. Если вы попытаетесь получить больше, лишние цифры будут либо нулями, либо мусором. Попробуйте отформатировать что-то вроде 1/3, чтобы понять, что я имею в виду.
person Robert L    schedule 05.09.2009