Python-runde () -funktion med EKSEMPLER

Indholdsfortegnelse:

Anonim

Rund()

Round () er en indbygget funktion tilgængelig med python. Det returnerer dig et float-nummer, der afrundes til decimaler, der er angivet som input.

Hvis de decimaler, der skal afrundes, ikke er angivet, betragtes det som 0, og det afrundes til nærmeste heltal.

I denne Python-selvstudie lærer du:

  • Rund()
  • Syntaks:
  • Hvor stor effekt kan afrunding have? (Afrunding vs afkortning)
  • Eksempel: Afrunding af flydende numre
  • Eksempel: Afrunding af heltalværdier
  • Eksempel: Afrunding på negative tal
  • Eksempel: Round Numpy Arrays
  • Eksempel: decimalt modul

Syntaks:

round(float_num, num_of_decimals)

Parametre

  • float_num: float-nummeret, der skal afrundes.
  • num_of_decimals: (valgfrit) Antallet af decimaler, der skal tages i betragtning under afrunding. Det er valgfrit, og hvis det ikke er angivet, er det som standard 0, og afrundingen foretages til nærmeste heltal.

Beskrivelse

Metoden round () tager to argumenter

  • antallet, der skal afrundes, og
  • de decimaler, den skal overveje under afrunding.

Det andet argument er valgfrit og er som standard 0, når det ikke er specificeret, og i så fald afrundes det til nærmeste heltal, og returtypen vil også være et heltal.

Når decimaler, dvs. det andet argument, er til stede, afrundes det til antallet af angivne steder. Returtypen vil være en float.

Hvis tallet efter den angivne decimal

  • > = 5 end + 1 føjes til den endelige værdi
  • <5 end den endelige værdi vender tilbage, da den er op til de nævnte decimaler.

Returneringsværdi

Det returnerer et heltalsværdi, hvis num_of_decimals ikke er givet, og en float-værdi, hvis num_of_decimals er givet. Vær opmærksom på, at værdien afrundes til +1, hvis værdien efter decimaltegnet er> = 5 ellers returnerer den værdien, da den er op til de nævnte decimaler.

Hvor stor effekt kan afrunding have? (Afrunding vs afkortning)

Det bedste eksempel på at vise virkningen af ​​afrunding er for børsmarkedet. Tidligere, dvs. i år 1982, brugte Vancouver Stock Exchange (VSE): at afkorte aktieværdierne til tre decimaler på hver handel.

Det blev gjort næsten 3000 gange hver dag. De akkumulerede afkortninger fører til et tab på omkring 25 point om måneden.

Et eksempel på afkortning af værdier versus afrunding er vist nedenfor.

Overvej flydende-numre genereret nedenfor som aktieværdier. Lige nu genererer jeg det til en række

1.000.000 sekunder mellem 0,01 og 0,05.

Eksempler:

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

For at vise virkningen af ​​afrunding har jeg skrevet et lille stykke kode, hvor du først skal bruge tallene op til kun 3 decimaler, dvs. afkorte antallet efter 3 decimaler.

Jeg har den oprindelige samlede værdi, den samlede værdi kommer fra trunkerede værdier og forskellen mellem den oprindelige og trunkerede værdi.

På det samme sæt tal har jeg brugt runde () metode op til 3 decimaler og beregnet summen og forskellen mellem den oprindelige værdi og den afrundede værdi.

Her er eksemplet og output

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

Produktion:

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

Forskellen mellem original og efter afkortning er 499.9016193868665, og fra rund er 0,04661938686695066

Forskellen ser ud til at være meget stor, og eksemplet viser, hvordan man afrunder () -metoden hjælper med at beregne tæt på nøjagtighed.

Eksempel: Afrunding af flydende numre

I dette program vil vi se, hvordan afrunding af ord på flydende tal

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

Produktion:

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

Eksempel: Afrunding af heltalværdier

Hvis du tilfældigvis bruger runde () på et heltal, returnerer det bare antallet tilbage uden ændringer.

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

Produktion:

The output is 15

Eksempel: Afrunding på negative tal

Lad os se nogle få eksempler på, hvordan afrunding fungerer på negative tal

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

Produktion:

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

Eksempel: Round Numpy Arrays

Hvordan afrunder bedøvede arrays i python?

For at løse dette kan vi bruge numpy-modulet og bruge metoden numpy.round () eller numpy.around (), som vist i eksemplet nedenfor.

Brug af 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)

Produktion:

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

Vi kan også bruge numpy.around (), hvilket giver dig det samme resultat som vist i eksemplet nedenfor.

Eksempel: decimalt modul

Ud over funktionen round () har python et decimalmodul, der hjælper med at håndtere decimaltal mere præcist.

Decimalmodulet leveres med afrundingstyper som vist nedenfor:

  • ROUND_CEILING: den runder mod uendeligt,
  • ROUND_DOWN: den afrunder værdien mod nul,
  • ROUND_FLOOR: den vil runde mod -Uendelighed,
  • ROUND_HALF_DOWN: den afrunder til nærmeste værdi, der går mod nul,
  • ROUND_HALF_EVEN: det afrunder til nærmeste med værdi, der går til nærmeste lige heltal,
  • ROUND_HALF_UP: den afrunder til nærmeste med værdi, der går væk fra nul
  • ROUND_UP: den afrunder, hvor værdien vil gå væk fra nul.

I decimal hjælper kvantiseringsmetoden () med at afrunde til et fast antal decimaler, og du kan angive den afrunding, der skal bruges, som vist i eksemplet nedenfor.

Eksempel:

Brug runde () og decimale metoder

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)

Produktion:

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

Resumé:

  • Round (float_num, Num_of_decimals) er en indbygget funktion tilgængelig med python. Det returnerer dig floatnummeret, der afrundes til decimaler, der er angivet som input.
  • float_num: float-nummeret, der skal afrundes.
  • Num_of_decimaler: Det er antallet af decimaler, der skal tages i betragtning under afrunding.
  • Det returnerer et heltalsværdi, hvis num_of_decimals ikke er givet, og en float-værdi, hvis num_of_decimals er givet.