Я понятия не имею, как это сделать? Я добавляю номера запятой, результат, конечно, всегда будет числом с слишком большим количеством цифр после запятой. кто-нибудь?
Число округлений до 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)
Ответ 2
ОБНОВЛЕНИЕ: Имейте в виду, что во время первоначального написания ответа в 2010 году нижняя функция toFixed() работала немного иначе. toFixed(), кажется, выполняет некоторое округление, но не строго математическим способом. Так что будь осторожен с этим. Пройдите тесты... Метод, описанный ниже, хорошо сработает, как и ожидал математик.
toFixed()
- метод преобразует число в строку, сохраняя указанное количество десятичных знаков. На самом деле он не округляет число, а усекает число.Math.round(n)
- округляет число до ближайшего целого числа. Таким образом, поворачиваясь:
0,5 → 1; 0,05 → 0
так что если вы хотите округлить, скажем, число 0.55555, только до второго десятичного знака; Вы можете сделать следующее (это пошаговая концепция):
0.55555 * 100
= 55,555Math.Round(55.555)
→ 56 00056.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()
функцию astoFixed(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;
}