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.

Wypróbuj to rozwiązanie w Edytorze

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.

round_numbers.py
Spróbuj w Edytorze
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)
Wyjście terminala
Nearest Integer: 3
Two decimals: 3.14
round(2.5): 2
round(3.5): 4
Decimal ROUND_HALF_UP (2.5): 3

Wdraż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

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.