Chciałem wyświetlić liczbę z dokładnością do 2 miejsc po przecinku.
Myślałem, że mogę użyć toPrecision(2)
w JavaScript.
Jednak jeśli numer jest 0.05
, dostaję 0.0500
. Wolałbym, żeby pozostało tak samo.
Zobacz to na JSbin .
Jak najlepiej to zrobić?
Mogę pomyśleć o kodowaniu kilku rozwiązań, ale wyobrażam sobie (mam nadzieję), że coś takiego jest wbudowane?
Można to zrobić za pomocą tej
toFixed
funkcji, ale w IE jest ona wadliwa . Jeśli chcesz niezawodnego rozwiązania, spójrz na moją odpowiedź tutaj .źródło
float_num.toFixed(2);
działa dobrze)Spróbuj
toFixed
zamiasttoPrecision
.źródło
Nie wiem, jak dostałem się do tego pytania, ale nawet jeśli minęło wiele lat, odkąd zostało zadane, chciałbym dodać szybką i prostą metodę, którą stosuję i nigdy mnie nie zawiódł:
źródło
parseFloat()
tam Należy go używać tylko wtedy, gdy liczba pochodzi z ciągu.function round(value, decimals) { return Number(Math.round(value+'e'+decimals)+'e-'+decimals); }
Odpowiedź znajduje się pod tym linkiem: http://www.jacklmoore.com/notes/rounding-in-javascript/
źródło
number.parseFloat(2)
działa, ale zwraca ciąg znaków.Jeśli chcesz zachować ten typ liczbowy, możesz użyć:
Math.round(number * 100) / 100
źródło
Możesz spróbować miksowania
Number()
itoFixed()
.Przekształć liczbę docelową na ładny ciąg z cyframi X, a następnie przekonwertuj sformatowany ciąg na liczbę.
Number( (myVar).toFixed(2) )
Zobacz przykład poniżej:
źródło
a oto składnia
Argument cyfry jest opcjonalny i domyślnie wynosi 0. Zwracanym typem jest łańcuch, a nie liczba. Ale możesz przekonwertować go na liczbę za pomocą
To również może generuje wyjątki podoba
TypeError
,RangeError
Oto pełny szczegół i zgodność w przeglądarce.
źródło
źródło
Zrobiłem tę funkcję. Działa dobrze, ale zwraca ciąg.
źródło