Funkcija Python round () z PRIMERI

Kazalo:

Anonim

Okrogla ()

Round () je vgrajena funkcija, ki je na voljo s pythonom. Vrnil vam bo float številko, ki bo zaokrožena na decimalna mesta, ki so podana kot vhod.

Če decimalna mesta, ki jih je treba zaokrožiti, niso določena, se šteje kot 0 in se zaokroži na najbližje celo število.

V tej vadnici za Python boste izvedeli:

  • Okrogla ()
  • Sintaksa:
  • Koliko vpliva lahko zaokroževanje? (Zaokroževanje vs skrajšanje)
  • Primer: zaokroževanje float številk
  • Primer: zaokroževanje celoštevilčnih vrednosti
  • Primer: zaokroževanje negativnih števil
  • Primer: okrogla polja Numpy
  • Primer: decimalni modul

Sintaksa:

round(float_num, num_of_decimals)

Parametri

  • float_num: številka plovca, ki se zaokroži.
  • num_of_decimals: (neobvezno) Število decimalnih mest, ki jih je treba upoštevati med zaokroževanjem. Neobvezno in če ni določeno, je privzeto 0, zaokroževanje pa se izvede na najbližje celo število.

Opis

Metoda round () ima dva argumenta

  • število, ki ga je treba zaokrožiti in
  • decimalna mesta, ki jih je treba upoštevati med zaokroževanjem.

Drugi argument je neobvezen in privzeto je 0, če ni določen, v tem primeru pa se zaokroži na najbližje celo število, vrsta vrnitve pa bo tudi celo število.

Ko so decimalna mesta, tj. Drugi argument, zaokrožena na število danih mest. Vrsta vrnitve bo float.

Če je številka za navedenim decimalnim mestom

  • > = 5 kot + 1 bo dodano končni vrednosti
  • <5, se bo vrnila končna vrednost, saj znaša do decimalnih mest.

Vrnjena vrednost

Vrnil bo celoštevilčno vrednost, če ni podano število_decimal, in plavajočo vrednost, če je dano število_dekimal. Upoštevajte, da bo vrednost zaokrožena na +1, če je vrednost za decimalno vejico> = 5, sicer bo vrnila vrednost, kakršna je do omenjenih decimalnih mest.

Koliko vpliva lahko zaokroževanje? (Zaokroževanje vs skrajšanje)

Najboljši primer za prikaz vpliva zaokroževanja je borzni trg. V preteklosti, tj. Leta 1982, je Vancouverska borza vrednostnih papirjev (VSE): uporabljala za okrnitev vrednosti delnic na tri decimalna mesta na vsaki transakciji.

Naredili so ga skoraj 3000-krat na dan. Nakopičene rezitve povzročijo izgubo približno 25 točk na mesec.

Primer skrajšanja vrednosti v primerjavi z zaokroževanjem je prikazan spodaj.

Številke s plavajočo vejico, spodaj ustvarjene, upoštevajte kot vrednosti zalog. Trenutno ga ustvarjam za vrsto

1.000.000 sekund med 0,01 in 0,05.

Primeri:

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

Da pokažem vpliv zaokroževanja, sem napisal majhen delček kode, pri katerem morate najprej uporabiti števila do samo 3 decimalna mesta, tj. Obrezati število za 3 decimalna mesta.

Imam prvotno skupno vrednost, seštevek prihaja iz okrnjenih vrednosti in razliko med prvotno in okrnjeno vrednostjo.

Na istem naboru številk uporabljam metodo round () do 3 decimalna mesta in izračunam vsoto in razliko med prvotno in zaokroženo vrednostjo.

Tu so primer in rezultat

Primer 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)

Izhod:

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

Razlika med prvotnim in po skrajšanju je 499,9016193868665, od okroglega pa 0,04661938686695066

Zdi se, da je razlika zelo velika in primer prikazuje, kako metoda zaokroževanja () pomaga pri izračunu blizu natančnosti.

Primer: zaokroževanje float številk

V tem programu bomo videli, kako zaokrožujejo besede na plavajočih številkah

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

Izhod:

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

Primer: zaokroževanje celoštevilčnih vrednosti

Če slučajno uporabite round () za celoštevilčno vrednost, vam bo vrnil številko nazaj brez sprememb.

# testing round() on a integernum = 15print("The output is", round(num))

Izhod:

The output is 15

Primer: zaokroževanje negativnih števil

Oglejmo si nekaj primerov, kako zaokroževanje deluje na negativne številke

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

Izhod:

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

Primer: okrogla polja Numpy

Kako zaokrožiti polja numpy v pythonu?

Da bi to rešili, lahko uporabimo modul numpy in uporabimo metodo numpy.round () ali numpy.around (), kot je prikazano v spodnjem primeru.

Uporaba 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)

Izhod:

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

Lahko uporabimo tudi numpy.around (), ki vam da enak rezultat, kot je prikazan v spodnjem primeru.

Primer: decimalni modul

Poleg funkcije round () ima python tudi decimalni modul, ki pomaga pri natančnejšem ravnanju z decimalnimi števili.

Decimalni modul ima vrste zaokroževanja, kot je prikazano spodaj:

  • ROUND_CEILING: zaokrožilo se bo proti neskončnosti,
  • ROUND_DOWN: vrednost bo zaokrožila proti ničli,
  • ROUND_FLOOR: zaokrožilo se bo proti -Infinity,
  • ROUND_HALF_DOWN: zaokroži se na najbližjo vrednost, ki gre proti ničli,
  • ROUND_HALF_EVEN: zaokrožilo se bo na najbližje z vrednostjo, ki bo najbližje celo celo število,
  • ROUND_HALF_UP: zaokroži se na najbližje z vrednostjo, ki odstopa od nič
  • ROUND_UP: zaokrožilo se bo, kjer se bo vrednost oddaljila od nič.

V decimalni metodi metoda quantize () pomaga zaokrožiti na določeno število decimalnih mest in lahko določite zaokroževanje, ki bo uporabljeno, kot je prikazano v spodnjem primeru.

Primer:

Uporaba okroglih () in decimalnih metod

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)

Izhod:

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

Povzetek:

  • Round (float_num, Num_of_decimals) je vgrajena funkcija, ki je na voljo s pythonom. Vrnil vam bo float številko, ki bo zaokrožena na decimalna mesta, ki so podana kot vhod.
  • float_num: številka plovca, ki se zaokroži.
  • Num_of_decimals: Število decimalnih mest, ki jih je treba upoštevati med zaokroževanjem.
  • Vrnil bo celoštevilčno vrednost, če ni podano število_decimal, in plavajočo vrednost, če je dano število_dekimal.