Nie mam pojęcia, jak to zrobić? Dodam liczby przecinkami, wynik jest oczywiście zawsze liczbą ze zdecydowanie zbyt dużą liczbą cyfr po przecinku. ktoś?
Nie mam pojęcia, jak to zrobić? Dodam liczby przecinkami, wynik jest oczywiście zawsze liczbą ze zdecydowanie zbyt dużą liczbą cyfr po przecinku. ktoś?
Odpowiedzi:
EDYCJA 2 :
Użyj metody Number
obiektu w następujący toFixed
sposób:
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)
Zaokrągla 42,0054321 do 42,01
Zaokrągla od 0,005 do 0,01
Zaokrągla od -0,005 do -0,01 (więc wartość bezwzględna rośnie wraz z zaokrągleniem do granicy 0,5)
AKTUALIZACJA: Należy pamiętać, że w momencie, gdy odpowiedź została napisana po raz pierwszy w 2010 r., Funkcja poniżej toFixed () działała nieco inaczej. ToFixed () wydaje się teraz dokonywać pewnych zaokrągleń, ale nie w ściśle matematyczny sposób. Więc uważaj na to. Wykonaj swoje testy ... Metoda opisana poniżej sprawdzi się dobrze, zgodnie z oczekiwaniami matematyka.
toFixed()
- metoda konwertuje liczbę na łańcuch, zachowując określoną liczbę miejsc po przecinku. W rzeczywistości nie zaokrągla liczby w górę, lecz ją obcina.Math.round(n)
- zaokrągla liczbę do najbliższej liczby całkowitej. Tak więc obracając:0,5 -> 1; 0,05 -> 0
więc jeśli chcesz zaokrąglić, powiedz liczbę 0,55555, tylko do drugiego miejsca po przecinku; możesz wykonać następujące czynności (jest to koncepcja krok po kroku):
0.55555 * 100
= 55,555 Math.Round(55.555)
-> 56.00056.000 / 100
= 0,56000 (0.56000).toFixed(2)
-> 0,56a to jest kod:
(Math.round(number * 100)/100).toFixed(2);
To zadziałało dla mnie:
var new_number = float.toFixed(2);
Przykład:
var my_float = 0.6666
my_float.toFixed(3) # => 0.667
0.6666.toFixed(3)
staje się 0.666
zamiast 0.667
. @Andrei wydaje się mieć właściwe rozwiązanie do prawidłowego zaokrąglania.
toFixed()
działa perfekcyjnie: 0.6666.toFixed(3) # => 0.667
. Dodam to do twojej odpowiedzi.
Poprzednie odpowiedzi zapomniały ponownie wpisać dane wyjściowe jako liczbę. W zależności od upodobań można to zrobić na kilka sposobów.
+my_float.toFixed(2)
Number(my_float.toFixed(2))
parseFloat(my_float.toFixed(2))
Chociaż mamy tutaj wiele odpowiedzi z wieloma przydatnymi sugestiami, w każdej z nich nadal brakuje pewnych kroków.
Oto kompletne rozwiązanie opakowane w małą funkcję:
function roundToTwoDigitsAfterComma(floatNumber) {
return parseFloat((Math.round(floatNumber * 100) / 100).toFixed(2));
}
Na wypadek gdybyś był zainteresowany, jak to działa:
toFixed(2)
aby zachować 2 cyfry po przecinku i wrzucić inną bezużyteczną częśćparseFloat()
funkcji jako
toFixed(2)
zwracanego ciąguUwaga: jeśli zachowujesz ostatnie 2 cyfry po przecinku, ponieważ pracujesz z wartościami pieniężnymi i wykonujesz obliczenia finansowe, pamiętaj, że to nie jest dobry pomysł i lepiej zamiast tego użyj wartości całkowitych.
użyj poniższego kodu.
alert(+(Math.round(number + "e+2") + "e-2"));
Używam tego:
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;
}