Python funkcija round() s PRIMJERIMA

Krug()

Round() je ugraฤ‘ena funkcija dostupna s pythonom. Vratit ฤ‡e vam float broj koji ฤ‡e biti zaokruลพen na decimalna mjesta koja su dana kao ulaz.

Ako decimalna mjesta koja se zaokruลพuju nisu navedena, smatra se da je 0 i zaokruลพit ฤ‡e se na najbliลพi cijeli broj.

Sintaksa

round(float_num, num_of_decimals)

Parametri

  • float_num: broj float koji treba zaokruลพiti.
  • num_of_decimals: (neobavezno) Broj decimala koje treba uzeti u obzir prilikom zaokruลพivanja. Nije obavezan, a ako nije naveden, zadana je vrijednost 0, a zaokruลพivanje se vrลกi na najbliลพi cijeli broj.

Description

Metoda round() uzima dva argumenta

  • broj koji treba zaokruลพiti i
  • decimalna mjesta koja treba uzeti u obzir prilikom zaokruลพivanja.

Drugi argument nije obavezan i zadana je vrijednost 0 kada nije naveden, au tom ฤ‡e sluฤaju zaokruลพiti na najbliลพi cijeli broj, a povratna vrsta takoฤ‘er ฤ‡e biti cijeli broj.

Kada su prisutna decimalna mjesta, tj. drugi argument, zaokruลพit ฤ‡e se na navedeni broj mjesta. Tip povrata bit ฤ‡e float.

Ako je broj iza navedenog decimalnog mjesta

  • >=5 od + 1 bit ฤ‡e dodan konaฤnoj vrijednosti
  • <5 nego ฤ‡e se konaฤna vrijednost vratiti jer je do navedenih decimalnih mjesta.

Povratna vrijednost

Vratit ฤ‡e vrijednost cijelog broja ako nije zadan num_of_decimals i vrijednost s pomiฤnim pomiฤnim stupnjem ako je zadan num_of_decimals. Imajte na umu da ฤ‡e vrijednost biti zaokruลพena na +1 ako je vrijednost nakon decimalne toฤke >=5, inaฤe ฤ‡e vratiti vrijednost do navedenih decimalnih mjesta.

Koliki utjecaj moลพe imati zaokruลพivanje? (Zaokruลพivanje u odnosu na skraฤ‡ivanje)

Najbolji primjer koji pokazuje utjecaj zaokruลพivanja je burzovno trลพiลกte. U proลกlosti, tj. 1982. godine, Burza u Vancouveru (VSE): koristi se za skraฤ‡ivanje vrijednosti dionica na tri decimalna mjesta u svakoj trgovini.

To je uฤinjeno gotovo 3000 puta svaki dan. Akumulirana skraฤ‡ivanja dovode do gubitka od oko 25 bodova mjeseฤno.

Dolje je prikazan primjer skraฤ‡ivanja vrijednosti u odnosu na zaokruลพivanje.

Brojeve s pomiฤnim zarezom generirane u nastavku smatrajte vrijednostima dionica. Trenutno ga generiram za niz

1,000,000 sekundi izmeฤ‘u 0.01 i 0.05.

Primjeri:

arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]

Kako bih pokazao utjecaj zaokruลพivanja, napisao sam mali dio koda u kojem prvo trebate koristiti brojeve do samo 3 decimalna mjesta, tj. skraฤ‡ivati โ€‹โ€‹broj nakon 3 decimalna mjesta.

Imam izvornu ukupnu vrijednost, ukupnu vrijednost koja dolazi iz skraฤ‡enih vrijednosti i razliku izmeฤ‘u izvorne i skraฤ‡ene vrijednosti.

Na istom skupu brojeva koristio sam metodu round() do 3 decimalna mjesta i izraฤunavao zbroj i razliku izmeฤ‘u izvorne vrijednosti i zaokruลพene vrijednosti.

Evo primjera i rezultata
Primjer 1

import random

def truncate(num):
    return int(num * 1000) / 1000

arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
sum_num = 0
sum_truncate = 0
for i in arr:
    sum_num = sum_num + i        
    sum_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 = 0
sum_truncate1 = 0
for i in arr:
    sum_num1 = sum_num1 + i        
    sum_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)

Izlaz:

Testing by using truncating upto 3 decimal places
The original sum is =  29985.958619386867
The total using truncate =  29486.057
The difference from original - truncate =  499.9016193868665



Testing by using round() up to 3 decimal places
The original sum is = 29985.958619386867
The total using round =  29985.912
The difference from original - round = 0.04661938686695066

Razlika izmeฤ‘u izvornog i naknadnog skraฤ‡ivanja je 499.9016193868665, a iz kruga je 0.04661938686695066

ฤŒini se da je razlika vrlo velika, a primjer pokazuje kako metoda round() pomaลพe u izraฤunavanju blizu toฤnosti.

Primjer: Rounding Float Numbers

U ovom programu ฤ‡emo vidjeti kako se rijeฤi zaokruลพuju na pomiฤne brojeve

# 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 >5 

float_num2 = 10.40 # here the value will be rounded to 10 as after the decimal point the number is 4 that is <=5

float_num3 = 10.3456 # here the value will be 10.35 as after the 2 decimal points the value >=5 

float_num4 = 10.3445 #here the value will be 10.34 as after the 2 decimal points the value is <5 

print("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))

Izlaz:

The rounded value without num_of_decimals is : 11
The rounded value without num_of_decimals is : 10
The rounded value with num_of_decimals as 2 is : 10.35
The rounded value with num_of_decimals as 2 is : 10.34

Primjer: Zaokruลพivanje cijelih vrijednosti

Ako sluฤajno koristite round() na cjelobrojnoj vrijednosti, ona ฤ‡e vam samo vratiti broj bez ikakvih promjena.

# testing round() on a integer

num = 15

print("The output is", round(num))

Izlaz:

The output is 15

Primjer: zaokruลพivanje na negativno Numbers

Pogledajmo nekoliko primjera kako zaokruลพivanje radi na negativnim brojevima

# testing round()

num = -2.8
num1 = -1.5
print("The value after rounding is", round(num))
print("The value after rounding is", round(num1))

Izlaz:

C:\pythontest>python testround.py
The value after rounding is -3
The value after rounding is -2

Primjer: Okrugli Numpy nizovi

Kako zaokruลพiti numpy nizovi u pythonu?

Da bismo to rijeลกili, moลพemo upotrijebiti modul numpy i upotrijebiti metodu numpy.round() ili numpy.around(), kao ลกto je prikazano u primjeru u nastavku.

Upotreba numpy.round()

# testing round()
import numpy as np

arr = [-0.341111, 1.455098989, 4.232323, -0.3432326, 7.626632, 5.122323]

arr1 = np.round(arr, 2)

print(arr1)

Izlaz:

C:\pythontest>python testround.py
[-0.34  1.46  4.23 -0.34  7.63  5.12]

Takoฤ‘er moลพemo koristiti numpy.around(), koji vam daje isti rezultat kao ลกto je prikazano u primjeru u nastavku.

Primjer: decimalni modul

Uz funkciju round(), python ima decimalni modul koji pomaลพe u toฤnijem rukovanju decimalnim brojevima.

Decimalni modul dolazi s vrstama zaokruลพivanja, kao ลกto je prikazano u nastavku:

  • ROUND_CEILING: zaokruลพit ฤ‡e se prema beskonaฤnosti,
  • ROUND_DOWN: zaokruลพit ฤ‡e vrijednost prema nuli,
  • ROUND_FLOOR: zaokruลพit ฤ‡e se prema -Beskonaฤno,
  • ROUND_HALF_DOWN: zaokruลพit ฤ‡e se na najbliลพu vrijednost prema nuli,
  • ROUND_HALF_EVEN: zaokruลพit ฤ‡e na najbliลพi s vrijednoลกฤ‡u koja ide na najbliลพi parni cijeli broj,
  • ROUND_HALF_UP: zaokruลพit ฤ‡e se na najbliลพu s vrijednoลกฤ‡u koja ide od nule
  • ROUND_UP: zaokruลพit ฤ‡e se tamo gdje ฤ‡e vrijednost iฤ‡i od nule.

U decimalnom sustavu, metoda quantize() pomaลพe u zaokruลพivanju na fiksni broj decimalnih mjesta, a moลพete odrediti zaokruลพivanje koje ฤ‡e se koristiti, kao ลกto je prikazano u primjeru u nastavku.
Primjer:
Koriลกtenje round() i decimalnih metoda

import  decimal 
round_num = 15.456

final_val = round(round_num, 2)

#Using decimal module
final_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)

Izlaz:

Using round() 15.46
Using Decimal - ROUND_CEILING  15.46
Using Decimal - ROUND_DOWN  15.45
Using Decimal - ROUND_FLOOR  15.45
Using Decimal - ROUND_HALF_DOWN  15.46
Using Decimal - ROUND_HALF_EVEN  15.46
Using Decimal - ROUND_HALF_UP  15.46
Using Decimal - ROUND_UP  15.46

Rezime

  • Round(float_num, Num_of_decimals) je ugraฤ‘ena funkcija dostupna s pythonom. Vratit ฤ‡e vam float broj koji ฤ‡e biti zaokruลพen na decimalna mjesta koja su dana kao ulaz.
  • float_num: broj float koji treba zaokruลพiti.
  • Num_of_decimals: To je broj decimala koje treba uzeti u obzir prilikom zaokruลพivanja.
  • Vratit ฤ‡e vrijednost cijelog broja ako nije zadan num_of_decimals i vrijednost s pomiฤnim pomiฤnim stupnjem ako je zadan num_of_decimals.

Saลพmite ovu objavu uz: