Muszę runda na przykład 6.688689
do 6.7
, ale zawsze mi pokazuje 7
.
Moja metoda:
Math.round(6.688689);
//or
Math.round(6.688689, 1);
//or
Math.round(6.688689, 2);
Ale wynik zawsze jest taki sam 7
... Co robię źle?
javascript
rounding
Vitalii Ponomar
źródło
źródło
(6.688689).toFixed(1);
.toFixed
zwraca ciąg znaków. Pamiętaj o zawinięciu wynikuNumber()
. Zobacz zaakceptowaną odpowiedź i inne.Odpowiedzi:
źródło
Number((456.1235).toFixed(3)) -> 456.123
,Number((1.235).toFixed(2)) -> 1.24
... Głupiźródło
Math.round(1.005*100)/100
na przykład z MDN1.005 * 100 = 100.49999999999999
(przynajmniej w silniku JS próbowałem). Dlatego nie działa i dlatego nigdy nie powinieneś polegać na doskonałej dokładności pływaków.Użyj
toFixed()
funkcji.źródło
Aktualizacja (2019-10). Dzięki poniższemu kodowi Reece Daniels teraz jest dostępny jako zestaw funkcji spakowanych w oczekiwany okrągły pakiet npm (zobacz).
Możesz użyć funkcji pomocniczej z przykładu MDN . Dzięki temu będziesz mieć większą elastyczność:
Aktualizacja (15.01.2019). Wygląda na to, że dokumenty MDN nie mają już tych funkcji pomocniczych. Oto kopia zapasowa z przykładami:
Przykłady użycia:
źródło
Number
Obiektu w JavaScript metodę, która robi dokładnie to, czego potrzebują. Ta metoda jestNumber.toPrecision([precision])
.Podobnie jak w
.toFixed(1)
przypadku konwertuje wynik na ciąg i należy go ponownie przekonwertować na liczbę. Sporządzono za pomocą+
tutaj prefiksu.prosty test porównawczy na moim laptopie:
źródło
1e-10.toPrecision(3)
: „1.00e-10” - powoduje zaokrąglenie do cyfr znaczących .Jeśli nie tylko chcesz używać,
toFixed()
ale takżeceil()
ifloor()
na pływakach, możesz użyć następującej funkcji:Produkuje:
UPD:
Innym możliwym sposobem jest:
Produkuje:
źródło
Moja rozszerzona funkcja rundy:
Przykładowe dane wyjściowe:
źródło
Patrz poniżej
var original = 28.59;
var result=Math.round(original*10)/10
zwróci ci zwroty28.6
Mam nadzieję, że tego właśnie chcesz ..
źródło
źródło
Myślę, że ta funkcja może pomóc.
źródło
Myślę, że funkcja poniżej może pomóc
użycie:
roundOff(600.23458,2);
zwróci600.23
źródło
jeśli jesteś w kontekście node.js, możesz wypróbować mathjs
źródło
Istnieje alternatywa .toLocaleString () do formatowania liczb, z wieloma opcjami dotyczącymi ustawień regionalnych, grupowania, formatowania walut, notacji. Kilka przykładów:
Zaokrąglij do 1 miejsca po przecinku, zwróć liczbę zmiennoprzecinkową:
Zaokrąglij do 2 miejsc po przecinku, sformatuj jako walutę z określonym symbolem, użyj grupowania przecinków dla tysięcy:
Sformatuj jako walutę lokalną :
Zaokrąglij do minimum 3 miejsca po przecinku, wymuś wyświetlanie zer:
Styl procentowy dla współczynników. Wpisz * 100 ze znakiem%
źródło
źródło
Mam bardzo dobre rozwiązanie, jeśli toFixed () nie działa.
Przykład
źródło
Jeśli używasz Browserify dzisiaj, będziesz musiał spróbować: roundTo bardzo przydatna biblioteka NPM
źródło
Drobne poprawki do tej odpowiedzi :
źródło
roundToStep(1.015, 0.001)