Okrągły()
Round () to wbudowana funkcja dostępna w Pythonie. Zwróci liczbę zmiennoprzecinkową, która zostanie zaokrąglona do miejsc dziesiętnych podanych jako dane wejściowe.
Jeśli nie określono miejsc dziesiętnych do zaokrąglenia, przyjmuje się, że wynosi 0 i zaokrągla się do najbliższej liczby całkowitej.
W tym samouczku Python dowiesz się:
- Okrągły()
- Składnia:
- Jak duży wpływ może mieć zaokrąglanie? (Zaokrąglanie a obcięcie)
- Przykład: zaokrąglanie liczb zmiennoprzecinkowych
- Przykład: zaokrąglanie wartości całkowitych
- Przykład: zaokrąglanie liczb ujemnych
- Przykład: Round Numpy Arrays
- Przykład: moduł dziesiętny
Składnia:
round(float_num, num_of_decimals)
Parametry
- float_num: liczba zmiennoprzecinkowa do zaokrąglenia.
- num_of_decimals: (opcjonalnie) Liczba miejsc po przecinku, które należy wziąć pod uwagę podczas zaokrąglania. Jest opcjonalny, a jeśli nie jest określony, przyjmuje wartość domyślną 0, a zaokrąglanie jest wykonywane do najbliższej liczby całkowitej.
Opis
Metoda round () przyjmuje dwa argumenty
- liczba do zaokrąglenia i
- miejsca po przecinku, które należy wziąć pod uwagę podczas zaokrąglania.
Drugi argument jest opcjonalny i domyślnie przyjmuje wartość 0, jeśli nie jest określony, iw takim przypadku zaokrągla do najbliższej liczby całkowitej, a typem zwracanym również będzie liczba całkowita.
Gdy obecne są miejsca dziesiętne, tj. Drugi argument, zaokrągla się do podanej liczby miejsc. Zwracanym typem będzie liczba zmiennoprzecinkowa.
Jeśli liczba po podanym miejscu dziesiętnym
- > = 5 niż + 1 zostanie dodane do wartości końcowej
- <5, zwróci wartość końcowa, ponieważ jest zgodna z podanymi miejscami dziesiętnymi.
Wartość zwracana
Zwróci wartość całkowitą, jeśli nie podano num_of_decimals i wartość zmiennoprzecinkową, jeśli podano num_of_decimals. Należy pamiętać, że wartość zostanie zaokrąglona do +1, jeśli wartość po przecinku wynosi> = 5, w przeciwnym razie zwróci wartość do podanych miejsc dziesiętnych.
Jak duży wpływ może mieć zaokrąglanie? (Zaokrąglanie a obcięcie)
Najlepszym przykładem pokazującym wpływ zaokrągleń jest rynek giełdowy. W przeszłości, tj. W roku 1982, Vancouver Stock Exchange (VSE): zwykła skracać wartości akcji do trzech miejsc po przecinku dla każdej transakcji.
Robiono to prawie 3000 razy dziennie. Zgromadzone obcięcia prowadzą do utraty około 25 punktów miesięcznie.
Przykład obcinania wartości w porównaniu z zaokrąglaniem przedstawiono poniżej.
Rozważmy liczby zmiennoprzecinkowe wygenerowane poniżej jako wartości giełdowe. W tej chwili generuję go dla zakresu
1000000 sekund między 0,01 a 0,05.
Przykłady:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
Aby pokazać wpływ zaokrągleń, napisałem mały fragment kodu, w którym na początku musisz użyć liczb do 3 miejsc po przecinku, tj. Obcięcie liczby po 3 miejscach po przecinku.
Mam pierwotną wartość całkowitą, sumę pochodzącą z wartości obciętych i różnicę między wartością oryginalną a obciętą.
Na tym samym zestawie liczb używałem metody round () do 3 miejsc po przecinku i obliczałem sumę oraz różnicę między wartością pierwotną a wartością zaokrągloną.
Oto przykład i dane wyjściowe
Przykład 1
import randomdef truncate(num):return int(num * 1000) / 1000arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]sum_num = 0sum_truncate = 0for i in arr:sum_num = sum_num + isum_truncate = truncate(sum_truncate + i)print("Testing by using truncating upto 3 decimal places")print("The original sum is = ", sum_num)print("The total using truncate = ", sum_truncate)print("The difference from original - truncate = ", sum_num - sum_truncate)print("\n\n")print("Testing by using round() upto 3 decimal places")sum_num1 = 0sum_truncate1 = 0for i in arr:sum_num1 = sum_num1 + isum_truncate1 = round(sum_truncate1 + i, 3)print("The original sum is =", sum_num1)print("The total using round = ", sum_truncate1)print("The difference from original - round =", sum_num1 - sum_truncate1)
Wynik:
Testing by using truncating upto 3 decimal placesThe original sum is = 29985.958619386867The total using truncate = 29486.057The difference from original - truncate = 499.9016193868665Testing by using round() up to 3 decimal placesThe original sum is = 29985.958619386867The total using round = 29985.912The difference from original - round = 0.04661938686695066
Różnica między oryginałem a obcięciem wynosi 499,9016193868665, a od rundy 0,04661938686695066
Różnica wydaje się być bardzo duża, a przykład pokazuje, jak metoda round () pomaga w obliczeniach bliskich dokładności.
Przykład: zaokrąglanie liczb zmiennoprzecinkowych
W tym programie zobaczymy, jak zaokrąglać słowa na liczbach zmiennoprzecinkowych
# testing round()float_num1 = 10.60 # here the value will be rounded to 11 as after the decimal point the number is 6 that is >5float_num2 = 10.40 # here the value will be rounded to 10 as after the decimal point the number is 4 that is <=5float_num3 = 10.3456 # here the value will be 10.35 as after the 2 decimal points the value >=5float_num4 = 10.3445 #here the value will be 10.34 as after the 2 decimal points the value is <5print("The rounded value without num_of_decimals is :", round(float_num1))print("The rounded value without num_of_decimals is :", round(float_num2))print("The rounded value with num_of_decimals as 2 is :", round(float_num3, 2))print("The rounded value with num_of_decimals as 2 is :", round(float_num4, 2))
Wynik:
The rounded value without num_of_decimals is : 11The rounded value without num_of_decimals is : 10The rounded value with num_of_decimals as 2 is : 10.35The rounded value with num_of_decimals as 2 is : 10.34
Przykład: zaokrąglanie wartości całkowitych
Jeśli zdarzy ci się użyć round () na wartości całkowitej, zwróci ci to liczbę z powrotem bez żadnych zmian.
# testing round() on a integernum = 15print("The output is", round(num))
Wynik:
The output is 15
Przykład: zaokrąglanie liczb ujemnych
Zobaczmy kilka przykładów, jak działa zaokrąglanie liczb ujemnych
# testing round()num = -2.8num1 = -1.5print("The value after rounding is", round(num))print("The value after rounding is", round(num1))
Wynik:
C:\pythontest>python testround.pyThe value after rounding is -3The value after rounding is -2
Przykład: Round Numpy Arrays
Jak zaokrąglić tablice numpy w Pythonie?
Aby rozwiązać ten problem, możemy skorzystać z modułu numpy i metody numpy.round () lub numpy.around (), jak pokazano w poniższym przykładzie.
Używanie numpy.round ()
# testing round()import numpy as nparr = [-0.341111, 1.455098989, 4.232323, -0.3432326, 7.626632, 5.122323]arr1 = np.round(arr, 2)print(arr1)
Wynik:
C:\pythontest>python testround.py[-0.34 1.46 4.23 -0.34 7.63 5.12]
Możemy również użyć numpy.around (), co daje taki sam wynik, jak pokazano w poniższym przykładzie.
Przykład: moduł dziesiętny
Oprócz funkcji round (), python ma moduł dziesiętny, który pomaga w dokładniejszym przetwarzaniu liczb dziesiętnych.
Moduł Decimal zawiera typy zaokrąglania, jak pokazano poniżej:
- ROUND_CEILING: kręci się w kierunku nieskończoności,
- ROUND_DOWN: zaokrągli wartość w kierunku zera,
- ROUND_FLOOR: zaokrągli się w kierunku -Infinity,
- ROUND_HALF_DOWN: zaokrągli do najbliższej wartości zbliżającej się do zera,
- ROUND_HALF_EVEN: zaokrągli do najbliższej z wartością zbliżoną do najbliższej parzystej liczby całkowitej,
- ROUND_HALF_UP: zaokrągli się do najbliższej z wartością odbiegającą od zera
- ROUND_UP: zaokrągli, gdzie wartość odejdzie od zera.
W przypadku liczb dziesiętnych metoda quantize () pomaga zaokrąglić do ustalonej liczby miejsc dziesiętnych i można określić zaokrąglenie, które ma zostać użyte, jak pokazano w poniższym przykładzie.
Przykład:
Korzystanie z metod round () i decimal
import decimalround_num = 15.456final_val = round(round_num, 2)#Using decimal modulefinal_val1 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_CEILING)final_val2 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_DOWN)final_val3 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_FLOOR)final_val4 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_DOWN)final_val5 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_EVEN)final_val6 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_UP)final_val7 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_UP)print("Using round()", final_val)print("Using Decimal - ROUND_CEILING ",final_val1)print("Using Decimal - ROUND_DOWN ",final_val2)print("Using Decimal - ROUND_FLOOR ",final_val3)print("Using Decimal - ROUND_HALF_DOWN ",final_val4)print("Using Decimal - ROUND_HALF_EVEN ",final_val5)print("Using Decimal - ROUND_HALF_UP ",final_val6)print("Using Decimal - ROUND_UP ",final_val7)
Wynik:
Using round() 15.46Using Decimal - ROUND_CEILING 15.46Using Decimal - ROUND_DOWN 15.45Using Decimal - ROUND_FLOOR 15.45Using Decimal - ROUND_HALF_DOWN 15.46Using Decimal - ROUND_HALF_EVEN 15.46Using Decimal - ROUND_HALF_UP 15.46Using Decimal - ROUND_UP 15.46
Podsumowanie:
- Round (float_num, Num_of_decimals) to wbudowana funkcja dostępna w Pythonie. Zwróci liczbę zmiennoprzecinkową, która zostanie zaokrąglona do miejsc dziesiętnych podanych jako dane wejściowe.
- float_num: liczba zmiennoprzecinkowa do zaokrąglenia.
- Num_of_decimals: Jest to liczba miejsc po przecinku, które należy wziąć pod uwagę podczas zaokrąglania.
- Zwróci wartość całkowitą, jeśli nie podano num_of_decimals i wartość zmiennoprzecinkową, jeśli podano num_of_decimals.