Округление чисел до 2 знаков после запятой

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

7 ответов


Изменить 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


  • 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);

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

var new_number = float.toFixed(2);

пример:

var my_float = 0.6666

my_float.toFixed(3) # => 0.667

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

+my_float.toFixed(2)

Number(my_float.toFixed(2))

parseFloat(my_float.toFixed(2))

Это не очень дружественный процессор, но:

Math.round(number*100)/100

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


использовать ниже код.

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

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

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

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

  1. множественный с 100 и после этого сделайте круг для того чтобы держать Точность 2 чисел после запятой
  2. разделить обратно на 100 и использовать toFixed(2) сохранить 2 цифры после запятая и выбросить другие unuseful часть
  3. преобразовать его обратно в float с помощью возвращает строку

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