Czy można zaokrąglić liczbę w javascript do 1 znaku po przecinku (odpowiednio zaokrąglone)?
Próbowałem * 10, round, / 10, ale pozostawia dwa miejsca po przecinku na końcu int.
javascript
rounding
Piechur
źródło
źródło
Math.round(n * 10) / 10
działa. Jaki jest twój kodOdpowiedzi:
Math.round(num * 10) / 10
działa, oto przykład ...jeśli chcesz, aby zawierało jedno miejsce po przecinku, nawet jeśli byłoby to 0, dodaj ...
EDYCJA: Dodaj rundę z funkcją precyzji ...
Dla przykładu, korzystając z tej zasady, jest przydatna mała okrągła funkcja, która wymaga precyzji ...
... stosowanie ...
... domyślnie zaokrągla się do najbliższej liczby całkowitej (dokładność 0) ...
... i może być wykorzystany do zaokrąglenia do najbliższej 10 lub 100 itd ...
... i prawidłowe postępowanie z liczbami ujemnymi ...
... i można łączyć z toFixed, aby konsekwentnie formatować jako ciąg ...
źródło
.toFixed()
ponieważ zwraca ciąg znaków, gdy chcesz numer.parseFloat
spowoduje usunięcie miejsc po przecinku,.toFixed()
jeśli jest to liczba całkowita (zera). Ogólnie rzecz biorąc, jeśli chcesz wykonać matematykę, najlepiej pójść za pierwszym przykładem. Jeśli chcesz wyświetlić liczbę w interfejsie użytkownika, użyj.toFixed()
..toFixed()
ponieważ może to zwrócić różne wyniki zaokrąglania dla różnych przeglądarek. Przeczytaj ten post, aby uzyskać szczegółowe informacje na ten temat!źródło
toFixed()
ma usterki - widziałem to w przeglądarce Chrome, do której dzwoniętoFixed()
, a następnie przekonwertowałem na ciąg znaków i pokazuje coś takiego10.00000000068
- dziwne. Nie można tego jednak wiarygodnie odtworzyć..toFixed()
ponieważ zwraca,String
gdy może chceszNumber
Jeśli użyjesz
Math.round(5.01)
, otrzymasz5
zamiast5.0
.Jeśli używasz,
toFixed
masz problemy z zaokrąglaniem .Jeśli chcesz to, co najlepsze z obu światów, połącz dwa:
Możesz chcieć utworzyć dla tego funkcję:
źródło
lodash
maround
metodę:Docs .
Źródło .
źródło
Głosuję za
toFixed()
, ale, dla przypomnienia, oto inny sposób, który polega na przesunięciu bitowym w celu przekazania liczby na liczbę całkowitą. Tak więc zawsze zaokrągla się do zera (w dół dla liczb dodatnich, w górę dla negatywów).Ale hej, ponieważ nie ma żadnych wywołań funkcji, jest to bardzo złe. :)
A oto taki, który używa dopasowywania ciągów:
Nie polecam używania wariantu łańcucha, po prostu powiedz.
źródło
Spróbuj tego:
mniej skomplikowane i łatwiejsze do wdrożenia ...
dzięki temu możesz stworzyć funkcję do wykonania:
Pokaż fragment kodu
EDYCJA : zobacz to Jak zaokrąglić za pomocą OKRĄGŁEJ PÓŁKI. Tryb zaokrąglania, którego większość z nas uczyła się w szkole podstawowej
źródło
x = liczba, n = miejsca po przecinku:
źródło
Dlaczego nie tylko
źródło
źródło
Aby wypełnić najlepszą odpowiedź:
Numer parametru wejściowego może „nie” zawsze być liczbą, w tym przypadku .toFixed nie istnieje.
źródło
Zaakceptowana wersja ES 6:
źródło
Za pomocą metody toPrecision:
źródło
12.345.toPrecision( 2 )
jest"12"
.Jeśli twoja metoda nie działa, plz opublikuj swój kod.
Można jednak wykonać zadanie zaokrąglania jako:
Otrzymasz 234,56
podobnie
Daje 234,5
W ten sposób można użyć zmiennej zamiast stałej, tak jak użyto powyżej.
źródło
Mały filtr kątowy, jeśli ktoś tego chce:
użyj, jeśli:
:)
źródło
Ogólnie zaokrąglanie odbywa się poprzez skalowanie:
round(num / p) * p
Prawidłowe użycie uchwytów notacji wykładniczej zaokrąglanie liczb + ve. Jednak ta metoda nie pozwala poprawnie zaokrąglić skrzynek krawędzi.
Tutaj jest też jedna funkcja, którą napisałem, aby zaokrąglać arytmetykę, którą możesz sam przetestować.
źródło
Wydaje się, że działa to niezawodnie we wszystkim, co na to rzucam:
Zaokrągla się w górę, więc może być konieczne zmodyfikowanie go odpowiednio do przypadku użycia. To powinno działać:
źródło
Jeśli zależy Ci na prawidłowym zaokrągleniu w górę:
Jeśli nie, to masz już odpowiedź z poprzednich postów
źródło
Math.round( num * 10) / 10
nie działaNa przykład
1455581777.8-145558160.4
daje1310023617.3999999
.Więc tylko używaj
num.toFixed(1)
źródło
Zrobiłem taki, który zwraca typ liczby, a także umieszcza ułamki dziesiętne tylko wtedy, gdy są potrzebne (bez marginesu 0).
Przykłady:
Kod:
źródło
Znalazłem sposób na uniknięcie problemów z precyzją:
źródło
Dzięki
źródło