Число округлений до 2 цифр после запятой

Я понятия не имею, как это сделать? Я добавляю номера запятой, результат, конечно, всегда будет числом с слишком большим количеством цифр после запятой. кто-нибудь?

Ответ 1

ОБНОВЛЕНИЕ 2:

Используйте метод объекта Number toFixed следующим образом:

var num = Number(0.005) // The Number() only visualizes the type and is not needed
var roundedString = num.toFixed(2);
var rounded = Number(roudedString); // toFixed() returns a string (often suitable for printing already)

Округляется с 42.0054321 до 42.01.

Округляет от 0,005 до 0,01

Округляет -0.005 до -0.01 (поэтому абсолютное значение увеличивается при округлении на границе .5)

Пример jsFiddle

Ответ 2

ОБНОВЛЕНИЕ: Имейте в виду, что во время первоначального написания ответа в 2010 году нижняя функция toFixed() работала немного иначе. toFixed(), кажется, выполняет некоторое округление, но не строго математическим способом. Так что будь осторожен с этим. Пройдите тесты... Метод, описанный ниже, хорошо сработает, как и ожидал математик.

  • toFixed() - метод преобразует число в строку, сохраняя указанное количество десятичных знаков. На самом деле он не округляет число, а усекает число.
  • Math.round(n) - округляет число до ближайшего целого числа. Таким образом, поворачиваясь:

0,5 → 1; 0,05 → 0

так что если вы хотите округлить, скажем, число 0.55555, только до второго десятичного знака; Вы можете сделать следующее (это пошаговая концепция):

  • 0.55555 * 100 = 55,555
  • Math.Round(55.555) → 56 000
  • 56.000 / 100 = 0,56000
  • (0.56000).toFixed(2) → 0,56

и это код:

(Math.round(number * 100)/100).toFixed(2);

Ответ 3

Это сработало для меня:

var new_number = float.toFixed(2);

Пример:

var my_float = 0.6666

my_float.toFixed(3) # => 0.667

Ответ 4

Предыдущие ответы забыли снова ввести результат как число. Существует несколько способов сделать это, в зависимости от ваших вкусов.

+my_float.toFixed(2)

Number(my_float.toFixed(2))

parseFloat(my_float.toFixed(2))

Ответ 5

Это не очень удобно для процессора, но:

Math.round(number*100)/100

работает как ожидалось.

Ответ 6

Хотя у нас есть много ответов здесь с множеством полезных предложений, каждый из них по-прежнему пропускает некоторые шаги.
Итак, вот решение complete, которое было добавлено в небольшую функцию:

function roundToTwoDigitsAfterComma(floatNumber) {
    return parseFloat((Math.round(floatNumber * 100) / 100).toFixed(2));
}

На всякий случай вам интересно, как это работает:

  • Несколько со 100, а затем выполните раунд, чтобы сохранить точность 2-х цифр после запятой
  • Разделите обратно на 100 и используйте toFixed(2), чтобы сохранить 2 цифры после запятая и выбросить другую неиспользуемую часть.
  • Преобразуйте его обратно в float, используя parseFloat() функцию as toFixed(2) возвращает строку вместо

Примечание. Если вы сохраняете последние две цифры после запятой из-за работы с денежными значениями и делая финансовые расчеты, имейте в виду, что не очень хорошая идея, и вам лучше использовать целочисленные значения.

Ответ 7

используйте приведенный ниже код.

alert(+(Math.round(number + "e+2")  + "e-2"));

Ответ 8

Я использую это:

function round(value, precision) {

	if(precision == 0)
		return Math.round(value);  	

	exp = 1;
	for(i=0;i<precision;i++)
		exp *= 10;

	return Math.round(value*exp)/exp;
}