2009-09-02 2 views
3

Я выполнения следующей операции в Javascript:Округление результат деления в Javascript

0,0030/0,031

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

+1

два или десять? –

+0

e ближе к w на большинстве клавиатур. –

+1

Теперь это правильный вопрос. –

ответ

13

Современные браузеры должны поддерживать метод toFixed(). Вот an example taken from the web:

// 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 исходное число на 10^х (10 в степени х), где х количество десятичных знаков хотите.
    • Применить Math.round()
    • Разделить на 10^х

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

var result=Math.round(5.111111*1000)/1000 //returns 5.111 
+0

Не забывайте, что реализация JScript 'toFixed' довольно несовершенна - http://www.jibbering.com/faq/#formatNumber – kangax

2

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

1

Чтобы ответить на вопросы Зубца:

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