Python Funkcija round() s PRIMJERIMA

โšก Pametni saลพetak

Python round() je ugraฤ‘ena funkcija koja vraฤ‡a vrijednost s pomiฤnim zarezom ili cijeli broj zaokruลพenu na odreฤ‘eni broj decimalnih mjesta, koristeฤ‡i bankarsko zaokruลพivanje za prekid veze prema najbliลพoj parnoj znamenki.

  • ๐Ÿ”˜ Sintaksa: round(number, ndibits) prihvaฤ‡a vrijednost zaokruลพivanja i opcionalni broj znamenki koji je zadano nula.
  • โ˜‘๏ธ Vrsta povrata: Izostavljanje ndigits vraฤ‡a cijeli broj, dok njegovo navoฤ‘enje vraฤ‡a broj s pomiฤnim zarezom.
  • โœ… Bankarsko zaokruลพivanje: Poloviฤne vrijednosti zaokruลพuju se na najbliลพi paran broj, pa round(2.5) vraฤ‡a 2.
  • ๐Ÿงช Negativni brojevi: Zaokruลพivanje se primjenjuje i na negativne brojeve, pomiฤuฤ‡i -2.8 na -3 i -1.5 na -2.
  • ๐Ÿ› ๏ธ Precizni alati: Decimalni modul i NumPy round() obraฤ‘uju zaokruลพivanje fiksne preciznosti i nizova.
  • ๐Ÿค– Tijekovi rada umjetne inteligencije: Kod strojnog uฤenja zaokruลพuje metrike, vjerojatnosti i teลพine radi ฤiลกฤ‡eg evidentiranja i izvjeลกฤ‡a.

Python funkcija round().

ล to je funkcija round() u Python?

Python round() je ugraฤ‘ena funkcija dostupna s PythonVratit ฤ‡e vam broj s pomiฤnim zarezom koji ฤ‡e biti zaokruลพen na decimalna mjesta koja su zadana 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

  • broj_s_floatom: Broj s pomiฤnim decimalom koji treba zaokruลพiti.
  • broj_decimalnih_mjeseca: (neobavezno) Broj decimalnih mjesta koji se uzimaju u obzir prilikom zaokruลพivanja. Nije obavezno, a ako nije navedeno, zadana vrijednost je 0, a zaokruลพivanje se vrลกi na najbliลพi cijeli broj.

Description

Metoda round() prima dva argumenta:

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

Drugi argument je opcionalan i zadana vrijednost je 0 kada nije naveden, a u tom sluฤaju ฤ‡e se zaokruลพiti na najbliลพi cijeli broj, a povratni tip ฤ‡e takoฤ‘er 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 decimalnog mjesta zadan:

  • >= 5, tada ฤ‡e se konaฤnoj vrijednosti dodati +1.
  • < 5, tada ฤ‡e se konaฤna vrijednost vratiti kakva jest, do navedenih decimalnih mjesta.

Povratna vrijednost

Vratit ฤ‡e cjelobrojnu vrijednost ako broj_decimala nije zadan, a vrijednost s pomiฤnim zarezom ako je zadan broj_decimala. Imajte na umu da ฤ‡e vrijednost biti zaokruลพena na +1 ako je vrijednost nakon decimalne toฤke >= 5, inaฤe ฤ‡e vratiti vrijednost kakva jest, 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 burza. 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 se radilo gotovo 3000 puta svaki dan. Nagomilana skraฤ‡ivanja dovela su do gubitka od oko 25 bodova mjeseฤno.

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

Razmotrite dolje generirane brojeve s pomiฤnim zarezom kao vrijednosti dionica. Trenutno ih generiram za raspon od 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 se prvo koriste brojevi do samo 3 decimale, tj. skraฤ‡uje se broj nakon 3 decimale.

Imam izvornu ukupnu vrijednost, ukupan zbroj koji dolazi od skraฤ‡enih vrijednosti i razliku izmeฤ‘u izvorne i skraฤ‡ene vrijednosti.

Na istom skupu brojeva koristio sam metodu round() do 3 decimale i izraฤunao 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 izvorne i skraฤ‡ene vrijednosti je 499.9016193868665, a iz round() je 0.04661938686695066.

Razlika se ฤini vrlo velikom, a primjer pokazuje kako metoda round() pomaลพe u izraฤunu gotovo toฤnim.

Primjer: Rounding Float Numbers

U ovom programu ฤ‡emo vidjeti kako zaokruลพivanje funkcionira na brojevima s pomiฤnim snopom.

# 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 funkcionira 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: Zaokruลพeni NumPy nizovi

Kako zaokruลพiti NumPy nizovi u Python?

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

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 daje isti rezultat kao numpy.round() prikazan gore.

Primjer: decimalni modul

Uz funkciju round(), Python ima decimalni modul koji pomaลพe u preciznijem rukovanju decimalnim brojevima.

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

  • OKRUGLI STROP: zaokruลพit ฤ‡e se prema Beskonaฤnosti.
  • ZAOKRUลฝIVANJE: zaokruลพit ฤ‡e vrijednost prema nuli.
  • OKRUGLI KAT: zaokruลพit ฤ‡e se prema -beskonaฤno.
  • ZAOKRUลฝENO_DO_POLOVICE: zaokruลพit ฤ‡e se na najbliลพu vrijednost koja ide prema nuli.
  • POLU_RUND_PARNO: zaokruลพit ฤ‡e se na najbliลพu vrijednost iduฤ‡i do najbliลพeg parnog cijelog broja.
  • ZAOKRUลฝENJE_NA_POLOVICU_GORE: zaokruลพit ฤ‡e se na najbliลพu vrijednost udaljavajuฤ‡i se od nule.
  • ZAOKRUลฝIVANJE: zaokruลพit ฤ‡e se tamo gdje ฤ‡e se vrijednost udaljavati 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

Pitanja i odgovori

Ne. Python 3 koristi zaokruลพivanje na polovicu na paran broj (bankarovo zaokruลพivanje) za nerijeลกene rezultate, pa je round(0.5) 0, round(2.5) 2, a round(3.5) 4. To smanjuje kumulativnu pristranost.

Buduฤ‡i da se 2.675 ne moลพe pohraniti toฤno u binarnom formatu s pomiฤnim zarezom; zapravo se ฤuva kao otprilike 2.6749999999999998, pa se round() zaokruลพuje prema dolje. Za toฤne rezultate koristite decimal.Decimal('2.675').

Koristite math modul: math.ceil(x) uvijek zaokruลพuje prema gore, math.floor(x) uvijek zaokruลพuje prema dolje, a int(x) skraฤ‡uje prema nuli. round() sam po sebi ne moลพe nametnuti fiksni smjer.

Proslijedite negativni drugi argument: round(12345, -1) daje 12340, round(12345, -2) daje 12300, a round(12345, -3) daje 12000. Negativni ndigits zaokruลพuje lijevo od decimalne toฤke.

round(x, 2) mijenja vrijednost koriลกtenu u kasnijoj matematici, dok f'{x:.2f}' samo formatira prikaz i ฤuva broj netaknutim. Koristite round() za izraฤune, f-stringove za izlaz.

Ne. Numbers su nepromjenjive, pa round() vraฤ‡a novu vrijednost bez promjene ulaza. Dodijelite je, na primjer rezultat = round(3.14159, 2); izvorna varijabla zadrลพava punu preciznost.

Kod strojnog uฤenja zaokruลพuje vrijednosti toฤnosti, gubitka i vjerojatnosti za ฤitljive zapise i mapiranje predviฤ‘anja na oznake klasa. Zadrลพite punu preciznost za matematiku gradijenta i zaokruลพite samo konaฤne prikazane metrike.

Da. AI asistenti poput GitHub Copilot autocomplete round(), np.round() i decimalnog zaokruลพivanja iz komentara ili naziva funkcije, te agentic alati refaktoriraju ruฤno formatiranje u round() pozive, iako odabrana preciznost joลก uvijek treba provjeriti.

Saลพmite ovu objavu uz: