Я не уявляю, як це зробити? Я додаю номери коми, результат, звичайно, завжди є числом із занадто великою кількістю цифр після коми. хто-небудь?
Я не уявляю, як це зробити? Я додаю номери коми, результат, звичайно, завжди є числом із занадто великою кількістю цифр після коми. хто-небудь?
Відповіді:
РЕДАКТУВАТИ 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)
ОНОВЛЕННЯ: Майте на увазі, що на момент написання відповіді у 2010 році функція нижче Fixed () працювала дещо інакше. toFixed (), здається, зараз робить деяке округлення, але не строго математично. Тому будьте обережні з цим. Виконайте свої тести ... Метод, описаний нижче, буде добре округляти, як очікував математик.
toFixed()
- метод перетворює число в рядок, зберігаючи задану кількість десяткових знаків. Це фактично не округлює число, воно скорочує число.Math.round(n)
- округлює число до найближчого цілого числа. При цьому обертаючись:0,5 -> 1; 0,05 -> 0
тому, якщо ви хочете округлити, скажімо число 0,55555, лише до другого десяткового знака; Ви можете зробити наступне (це поетапна концепція):
0.55555 * 100
= 55,555 Math.Round(55.555)
-> 56.00056.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
0.6666.toFixed(3)
стає 0.666
замість 0.667
. Здається, @Andrei має правильне рішення для правильного округлення.
toFixed()
працює відмінно: 0.6666.toFixed(3) # => 0.667
. Я додаю його до вашої відповіді.
Попередні відповіді забули знову ввести результат як число. Існує кілька способів зробити це, залежно від вашого смаку.
+my_float.toFixed(2)
Number(my_float.toFixed(2))
parseFloat(my_float.toFixed(2))
Хоча тут ми маємо багато відповідей із безліччю корисних пропозицій, кожен із них все ще пропускає деякі кроки.
Отже, ось повне рішення, обернене в невеликі функції:
function roundToTwoDigitsAfterComma(floatNumber) {
return parseFloat((Math.round(floatNumber * 100) / 100).toFixed(2));
}
Про всяк випадок, якщо вас цікавить, як це працює:
toFixed(2)
щоб зберегти 2 цифри після коми та кинути іншу некорисну частинуparseFloat()
функцію як
toFixed(2)
рядок поверненняПримітка. Якщо ви зберігаєте останні дві цифри після коми через роботу з грошовими значеннями та виконуєте фінансові розрахунки, майте на увазі, що це не є гарною ідеєю, і вам краще використовувати цілі значення.
скористайтеся наведеним нижче кодом.
alert(+(Math.round(number + "e+2") + "e-2"));
Я використовую це:
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;
}