Jak zaokrąglić liczbę w Pythonie (funkcja round() i dziesiętna)
Dowiedz się, jak zaokrąglać liczby zmiennoprzecinkowe w Pythonie. Zrozumienie zaokrągleń Bankera, niestandardowej precyzji dziesiętnej i formatowania elementów zmiennoprzecinkowych do wyświetlenia.
Przegląd
Arytmetyka zmiennoprzecinkowa w komputerach może czasami prowadzić do nieoczekiwanych problemów z precyzją ze względu na sposób, w jaki systemy binarne przechowują liczby dziesiętne (np. „0,1 + 0,2”, co daje w wyniku „0,30000000000000004”). Podczas renderowania liczb użytkownikom lub przygotowywania metryk powszechnym wymogiem jest zaokrąglanie liczb. Python zapewnia kilka sposobów osiągnięcia tego celu.
Podstawowym narzędziem jest wbudowana funkcja `round(liczba, ncyfry)`. Wymaga liczby i opcjonalnej precyzji. Jeśli pominięto „ncyfry”, następuje zaokrąglenie do najbliższej liczby całkowitej. Jeśli podano „ncyfry”, następuje zaokrąglenie do odpowiedniej liczby miejsc po przecinku.
Kluczową właściwością funkcji „round()” w Pythonie jest to, że wykorzystuje ona „zaokrąglanie bankiera” (zaokrąglanie od połowy do parzystej). Kiedy liczba znajduje się dokładnie w połowie odległości między dwiema liczbami całkowitymi (np. „2,5” lub „3,5”), Python zaokrągla do najbliższej *parzystej* liczby. Oznacza to, że „okrągła (2,5)” to „2”, a „okrągła (3,5)” to „4”. Choć matematycznie sprawiedliwe w przypadku dużych zbiorów danych, aby zapobiec odchyleniu w górę, do precyzyjnych obliczeń finansowych należy używać narzędzi kwantyzacji modułu „dziesiętnego”.
Dane wyjściowe kodu i wykonania
Ten skrypt demonstruje zaokrąglanie liczb zmiennoprzecinkowych przy użyciu wbudowanej funkcji round, przykładów zaokrągleń Bankera i modułu dziesiętnego.
from decimal import Decimal, ROUND_HALF_UP
val = 3.14159
# 1. Round to nearest integer
print("Nearest Integer:", round(val))
# 2. Round to 2 decimal places
print("Two decimals:", round(val, 2))
# 3. Banker's Rounding demonstration (rounds to nearest even)
print("round(2.5):", round(2.5)) # Nearest even is 2
print("round(3.5):", round(3.5)) # Nearest even is 4
# 4. Math rounding up (Traditional rounding) using decimal module
amount = Decimal("2.5")
rounded_up = amount.quantize(Decimal("1"), rounding=ROUND_HALF_UP)
print("Decimal ROUND_HALF_UP (2.5):", rounded_up)Nearest Integer: 3
Two decimals: 3.14
round(2.5): 2
round(3.5): 4
Decimal ROUND_HALF_UP (2.5): 3Wdrażanie krok po kroku
- Wywołaj wbudowaną funkcję round(number), aby zaokrąglić liczbę zmiennoprzecinkową do najbliższej liczby całkowitej.
- Przekaż drugi argument (np. round(num, 2)), aby określić liczbę miejsc po przecinku, które należy zachować.
- Użyj modułu dziesiętnego z ROUND_HALF_UP do dokładnych obliczeń zaokrągleń finansowych.
Często zadawane pytania
Dlaczego round(2.5) zwraca 2 zamiast 3 w Pythonie?
Python używa zaokrąglania Bankera, które zaokrągla połowę liczb do najbliższej parzystej liczby całkowitej. Zmniejsza to błąd statystyczny (zaokrąglanie w górę liczb zawsze powoduje niewielki dryft w górę w przypadku dużych zbiorów danych).
Jak zaokrąglić liczbę zawsze w górę lub zawsze w dół?
Zaimportuj moduł matematyczny i użyj funkcji math.ceil(x), aby zaokrąglić w górę do następnej liczby całkowitej, lub math.floor(x), aby zaokrąglić w dół do poprzedniej liczby całkowitej.
Powiązane tematy
Poznaj najlepsze techniki formatowania ciągów w Pythonie. Porównaj nowoczesne f-stringi, format() i formatowanie procentowe z przykładami kodu.
Jak przekonwertować ciąg na Int w PythonieDowiedz się, jak przekonwertować ciąg znaków na liczbę całkowitą w Pythonie za pomocą funkcji int(). Bezpiecznie obsługuj błędy i konwertuj liczby z formatu binarnego, ósemkowego lub szesnastkowego.
Polecane zasoby Pythona
Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.
Wyjaśnienie zmiennych i typów danych w Pythonie
Zrozumienie zmiennych Pythona i podstawowych typów danych (łańcuchy, liczby całkowite, zmiennoprzecinkowe, wartości logiczne). Kompletny przewodnik dla początkujących dotyczący przydzielania pamięci w Pythonie.
Ściągawka dotycząca metod słownika Pythona
Poznaj metody słownikowe Pythona. Kompletny przewodnik dotyczący wstawiania, pobierania, aktualizacji i sprawdzania par klucz-wartość.
Python kontra JavaScript: który język programowania jest najlepszy?
Kompleksowe porównanie Pythona i JavaScript. Poznaj różnice w składni, wydajność, przypadki użycia (backend vs frontend) i przykłady kodowania.