Raunds()
Round () ir iebūvēta funkcija, kas pieejama ar pitonu. Tas jums atgriezīs peldošo skaitli, kas tiks noapaļots līdz zīmēm aiz komata, kas tiek norādīts kā ievads.
Ja noapaļojamās decimāldaļas nav norādītas, tas tiek uzskatīts par 0 un tiks noapaļots līdz tuvākajam skaitlim.
Šajā Python apmācībā jūs uzzināsiet:
- Raunds()
- Sintakse:
- Cik lielu ietekmi noapaļošana var radīt? (Noapaļošana pret saīsināšanu)
- Piemērs: Pludināto skaitļu noapaļošana
- Piemērs: veselu skaitļu noapaļošana
- Piemērs: Negatīvo skaitļu noapaļošana
- Piemērs: apaļas nerātnās masīvas
- Piemērs: Decimālais modulis
Sintakse:
round(float_num, num_of_decimals)
Parametri
- float_num: noapaļojamais pludiņa skaitlis.
- ciparu skaitlis: (pēc izvēles) decimāldaļu skaits, kas jāņem vērā noapaļojot. Tas nav obligāts, un, ja tas nav norādīts, tas pēc noklusējuma ir 0, un noapaļošana tiek veikta līdz tuvākajam skaitlim.
Apraksts
Round () metodei ir divi argumenti
- noapaļojamais skaitlis un
- cipari aiz komata, kas jāņem vērā noapaļojot.
Otrais arguments nav obligāts un pēc noklusējuma ir 0, ja tas nav norādīts, un šādā gadījumā tas noapaļos līdz tuvākajam skaitlim, un atgriešanās veids būs arī vesels skaitlis.
Kad būs aiz komata, ti, otrais arguments, tas noapaļosies līdz piešķirto vietu skaitam. Atgriešanās veids būs pludiņš.
Ja skaitlis aiz norādītās zīmes aiz komata
- > = 5 galīgajai vērtībai tiks pievienots vairāk nekā + 1
- <5 nekā galīgā vērtība atgriezīsies, jo tā ir līdz minētajām zīmēm aiz komata.
Atgriešanās vērtība
Tas atgriezīs veselu skaitli, ja skaitlis_decimals nav norādīts, un peldošo vērtību, ja tiks norādīts skaitlis_decimals. Lūdzu, ņemiet vērā, ka vērtība tiks noapaļota līdz +1, ja vērtība aiz komata ir> = 5, pretējā gadījumā tā atgriezīs vērtību, kā tas ir līdz minētajām zīmēm aiz komata.
Cik lielu ietekmi noapaļošana var radīt? (Noapaļošana pret saīsināšanu)
Labākais piemērs, kas parāda noapaļošanas ietekmi, ir biržas tirgus. Iepriekš, ti, 1982. gadā, Vankūveras fondu birža (VSE): izmantoja, lai katrā tirdzniecībā saīsinātu akciju vērtības līdz trīs zīmēm aiz komata.
Tas tika darīts gandrīz 3000 reizes katru dienu. Uzkrāto saīsinājumu dēļ zaudējumi ir aptuveni 25 punkti mēnesī.
Zemāk parādīts vērtību saīsināšanas piemērs salīdzinājumā ar noapaļošanu.
Apsveriet zemāk ģenerētos peldošā komata skaitļus kā krājuma vērtības. Pašlaik es to ģenerēju virknei
1 000 000 sekundes starp 0,01 un 0,05.
Piemēri:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
Lai parādītu noapaļošanas ietekmi, esmu uzrakstījis nelielu koda fragmentu, kurā vispirms jāizmanto skaitļi līdz 3 zīmēm aiz komata, ti, saīsinot skaitli aiz 3 zīmēm aiz komata.
Man ir sākotnējā kopējā vērtība, kopsumma, kas nāk no saīsinātām vērtībām, un atšķirība starp sākotnējo un atdalīto vērtību.
Tajā pašā skaitļu kopā esmu izmantojis apaļu () metodi līdz 3 zīmēm aiz komata un aprēķinājis summu un starpību starp sākotnējo vērtību un noapaļoto vērtību.
Šeit ir piemērs un izeja
1. piemērs
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)
Izeja:
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
Atšķirība starp oriģinālu un pēc saīsināšanas ir 499.9016193868665, un no apaļas - 0.04661938686695066
Šķiet, ka atšķirība ir ļoti liela, un piemērā parādīts, kā noapaļot () metode palīdz aprēķināt tuvu precizitātei.
Piemērs: Pludināto skaitļu noapaļošana
Šajā programmā mēs redzēsim, kā noapaļo vārdus uz peldošiem skaitļiem
# 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))
Izeja:
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
Piemērs: veselu skaitļu noapaļošana
Ja veselam skaitlim izmantojat round (), tas vienkārši atgriezīs skaitli bez izmaiņām.
# testing round() on a integernum = 15print("The output is", round(num))
Izeja:
The output is 15
Piemērs: Negatīvo skaitļu noapaļošana
Apskatīsim dažus piemērus tam, kā noapaļošana darbojas ar negatīviem skaitļiem
# testing round()num = -2.8num1 = -1.5print("The value after rounding is", round(num))print("The value after rounding is", round(num1))
Izeja:
C:\pythontest>python testround.pyThe value after rounding is -3The value after rounding is -2
Piemērs: apaļas nerātnās masīvas
Kā noapaļot skaitļu masīvus pitonā?
Lai to atrisinātu, mēs varam izmantot numpy moduli un izmantot numpy.round () vai numpy.around () metodi, kā parādīts zemāk esošajā piemērā.
Izmantojot 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)
Izeja:
C:\pythontest>python testround.py[-0.34 1.46 4.23 -0.34 7.63 5.12]
Mēs varam izmantot arī numpy.around (), kas dod jums tādu pašu rezultātu kā parādīts zemāk esošajā piemērā.
Piemērs: Decimālais modulis
Papildus round () funkcijai pitonam ir decimālais modulis, kas palīdz precīzāk rīkoties ar decimāldaļām.
Decimālajam modulim ir noapaļošanas veidi, kā parādīts zemāk:
- BRAUKŠANA: tā noapaļosies uz Bezgalību,
- ROUND_DOWN: tas noapaļos vērtību uz nulli,
- ROUND_FLOOR: tas noapaļos virzienā uz -Infinity,
- ROUND_HALF_DOWN: tas noapaļosies līdz tuvākajai vērtībai virzienā uz nulli,
- ROUND_HALF_EVEN: tas noapaļosies līdz tuvākajam ar vērtību, kas tuvākajam veselajam skaitlim,
- ROUND_HALF_UP: tas noapaļos līdz tuvākajam ar vērtību, kas iet prom no nulles
- ROUND_UP: tas noapaļos vietu, kur vērtība pazudīs no nulles.
Decimāldaļā kvantēšanas () metode palīdz noapaļot līdz noteiktam skaitlim aiz komata, un jūs varat norādīt izmantojamo noapaļošanu, kā parādīts zemāk esošajā piemērā.
Piemērs:
Izmantojot apaļas () un decimāldaļas metodes
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)
Izeja:
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
Kopsavilkums:
- Apaļš (float_num, Num_of_decimals) ir iebūvēta funkcija, kas pieejama ar pitonu. Tas atgriezīs peldošo skaitli, kas tiks noapaļots līdz decimālzīmēm, kuras tiek norādītas kā ievade.
- float_num: noapaļojamais pludiņa skaitlis.
- Decimāldaļu skaits: tas ir decimāldaļu skaits, kas jāņem vērā noapaļojot.
- Tas atgriezīs veselu skaitli, ja skaitlis_decimals nav norādīts, un peldošo vērtību, ja tiks norādīts skaitlis_decimals.