Кто-нибудь может предложить хорошую математическую функцию в JavaScript, чтобы округлить целое число? - PullRequest
2 голосов
/ 02 июня 2011

мне нужно округлить значение от 2.3456789 до 2.345.

После . должно быть три числа, только оставшиеся должны быть удалены

Ответы [ 5 ]

3 голосов
/ 02 июня 2011

Javascript 1.5+ представлен Number.toFixed (n) и Number.toPrecision (n) - выберите один в зависимости от того, что вам нужно.

Number.toFixed () позволяет указать количество цифр после десятичной точки (при необходимости дополняется).

(2.3456789).toFixed(3) = "2.346"
(3).toFixed(3) = "3.000"

Number.toPrecision () позволяет указать числозначимых цифр.

(2.3456789).toPrecision(4) = "2.346"
3 голосов
/ 02 июня 2011

Используйте Math.round().

Это округляется до 3 десятичных знаков.

var result=Math.round(2.3456789*1000)/1000  //returns 2.345  

На самом деле формула округления любого числа до x десятичных точек:

1) Умножьте исходное число на 10^x (10 to the power of x).
2) Примените Math.round() к результату.
3) Разделите результат на 10^x.

2 голосов
/ 02 июня 2011

Есть value.toFixed(3), но это округлит до 2.346.

Вы можете просто parseInt(value * 1000) / 1000, если вы действительно не хотите округлять.

Возможно, вам нужно сначала убедиться, что значением является число:

value = new Number(value)

Теперь, если value - пользовательский ввод, возможно, что теперь это может быть NaN (не число).

Вы не можете сделать if(value == NaN) для проверки, NaN никогда не равен ничему (даже самому себе), вы должны использовать функцию isNaN(value).

1 голос
/ 02 июня 2011

Попробуйте Math.floor(2.3456789 * 1000) / 100. Это может привести к ошибкам с плавающей точкой, поэтому лучше сделать это с помощью строковых функций

var parts = String(2.3456789).split(".");
var out = parts[0] + "." + parts[1].substring(0, 3);

Конечно, второй метод может подавить числа с показателями степени.

0 голосов
/ 25 июня 2013

Используйте эту функцию для округления числа

// Arguments: number to round, number of decimal places

function roundNumber(rnum, rlength) {

  var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);

  retrurn parseFloat(newnumber); // Output the result to the form field (change for your purposes)

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...