Подтвердить что ты не робот

Ограничьте количество чисел, показанных после десятичной точки в javascript

Сено, у меня есть такие поплавки, как эти

4.3455
2.768
3.67

и я хочу их отобразить как

4.34
2.76
3.67

Я не хочу округлять число вверх или вниз, просто ограничьте количество чисел, показанных после десятичной точки, на 2.

4b9b3361

Ответ 1

Вы ищете toFixed:

var x = 4.3455;
alert(x.toFixed(2)); // alerts 4.35 -- not what you wanted!

... но похоже, что вы хотите усечь, а не округлять, поэтому:

var x = 4.3455;
x = Math.floor(x * 100) / 100;
alert(x.toFixed(2)); // alerts 4.34

Ответ 2

Если вы не хотите округлять до двух знаков после запятой, используйте toFixed() для округления до десяти знаков после запятой и отрубите все это, но 2:

var num = 4.3455.toFixed(20);
alert(num.slice(0, -18));
//-> 4.34

Обратите внимание, что это имеет небольшой недостаток округления, когда число десятичных знаков, прошедших до toFixed(), меньше числа десятичных знаков фактического числа, прошедшего в, и эти десятичные числа являются большими числами. Например, (4.99999999999).toFixed(10) даст вам 5.0000000000. Однако это не проблема, если вы можете гарантировать, что число десятичных знаков будет меньше, чем число, переданное в toFixed(). Однако он делает решение @TJ более надежным.

Ответ 3

Как ответил T.J, метод toFixed при необходимости выполнит соответствующее округление. Он также добавит конечные нули, что не всегда идеально.

(4.55555).toFixed(2);
//-> "4.56"

(4).toFixed(2);
//-> "4.00"

Если вы передадите возвращаемое значение в число, эти конечные нули будут удалены. Это более простой подход, чем выполнение собственной математики округления или усечения.

+parseFloat((4.55555).toFixed(2));
//-> 4.56

+parseFloat((4).toFixed(2));
//-> 4

Ответ 4

Предупреждение! В некоторых случаях принятое решение не выполняется, например. с 4.27 он ошибочно возвращает 4.26.

Вот общее решение, которое работает всегда.

(Может быть, я должен поставить это как комментарий, но на момент написания этой статьи у меня нет необходимой репутации)

Ответ 5

Использовать toPrecision:)

var y = 67537653.76828732668326;
y = (String(y).indexOf('.') !== -1) ? +y.toPrecision(String(y).indexOf('.') + 2) : +y.toFixed(2);
// => 67537653.76

2 во второй строке определяет количество десятичных знаков, этот подход возвращает число, если вы хотите, чтобы строка удаляла оператор "+".