Python round() functie met VOORBEELDEN

Ronde()

Round() is een ingebouwde functie die beschikbaar is in Python. Het geeft u een float-getal terug dat wordt afgerond op de decimalen die als invoer worden opgegeven.

Als het aantal decimalen dat afgerond moet worden niet is opgegeven, wordt dit als 0 beschouwd en wordt er afgerond op het dichtstbijzijnde gehele getal.

Syntaxis

round(float_num, num_of_decimals)

parameters

  • float_num: het floatgetal dat moet worden afgerond.
  • num_of_decimals: (optioneel) Het aantal decimalen dat in aanmerking moet worden genomen bij het afronden. Het is optioneel en als het niet wordt opgegeven, is de standaardwaarde 0 en wordt er afgerond op het dichtstbijzijnde gehele getal.

Beschrijving

De round() methode heeft twee argumenten nodig

  • het getal dat moet worden afgerond en
  • de decimalen waarmee rekening moet worden gehouden bij het afronden.

Het tweede argument is optioneel en is standaard 0 als het niet is opgegeven. In dat geval wordt afgerond naar het dichtstbijzijnde gehele getal en is het retourtype ook een geheel getal.

Als de cijfers achter de komma, dat wil zeggen het tweede argument, aanwezig zijn, wordt afgerond naar het opgegeven aantal cijfers. Het retourtype is een float.

Als het getal achter de komma wordt opgegeven

  • >=5 dan + 1 wordt opgeteld bij de uiteindelijke waarde
  • <5 dan zal de uiteindelijke waarde terugkeren, aangezien deze tot aan de genoemde decimalen reikt.

Winstwaarde

Het retourneert een geheel getal als het aantal_decimalen niet is opgegeven, en een float-waarde als het aantal_decimalen is opgegeven. Houd er rekening mee dat de waarde wordt afgerond op +1 als de waarde na de komma >=5 is, anders wordt de waarde geretourneerd tot op de genoemde decimalen.

Hoeveel impact kan afronding hebben? (Afronding versus afknotting)

Het beste voorbeeld om de impact van afronding aan te tonen is voor de beursmarkt. In het verleden, dat wil zeggen in het jaar 1982, werd de Beurs van Vancouver (VSE): wordt gebruikt om de aandelenwaarden bij elke transactie af te korten tot drie decimalen.

Het werd bijna 3000 keer per dag gedaan. De opgetelde afkortingen leiden tot een verlies van ongeveer 25 punten per maand.

Hieronder ziet u een voorbeeld van het afkappen van de waarden versus het afronden.

Beschouw de drijvende-kommagetallen die hieronder worden gegenereerd als aandelenwaarden. Op dit moment genereer ik ze voor een reeks

1,000,000 seconden tussen 0.01 en 0.05.

Voorbeelden:

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

Om het effect van afronding te laten zien, heb ik een klein stukje code geschreven. Eerst moet u getallen tot 3 decimalen gebruiken, dat wil zeggen dat u het getal na 3 decimalen moet afkappen.

Ik heb de oorspronkelijke totale waarde, het totaal afkomstig van ingekorte waarden en het verschil tussen originele en ingekorte waarde.

Voor dezelfde reeks getallen heb ik de round()-methode tot 3 decimalen gebruikt en de som en het verschil tussen de oorspronkelijke waarde en de afgeronde waarde berekend.

Hier zijn het voorbeeld en de uitvoer
Voorbeeld 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)

Output:

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

Het verschil tussen origineel en na afkappen is 499.9016193868665, en vanaf rond is het 0.04661938686695066

Het verschil lijkt erg groot, en het voorbeeld laat zien hoe de round()-methode helpt bij het berekenen van bijna nauwkeurigheid.

Voorbeeld: Afrondingsvlotter Numbers

In dit programma zullen we zien hoe we woorden op drijvende getallen kunnen afronden

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

Output:

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

Voorbeeld: afgeronde gehele waarden

Als u round() gebruikt voor een geheel getal, krijgt u gewoon het getal terug zonder enige wijzigingen.

# testing round() on a integer

num = 15

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

Output:

The output is 15

Voorbeeld: Afronding op negatief Numbers

Laten we eens een paar voorbeelden bekijken van hoe afronding werkt op negatieve getallen

# testing round()

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

Output:

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

Voorbeeld: ronde Numpy-arrays

Numpy afronden arrays in python?

Om dit op te lossen, kunnen we gebruik maken van de numpy-module en de numpy.round() of numpy.around()-methode gebruiken, zoals weergegeven in het onderstaande voorbeeld.

Numpy.round() gebruiken

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

Output:

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

We kunnen ook numpy.around() gebruiken, wat hetzelfde resultaat oplevert als in het onderstaande voorbeeld.

Voorbeeld: decimale module

Naast de round()-functie beschikt Python over een decimale module waarmee decimale getallen nauwkeuriger kunnen worden verwerkt.

De Decimal-module wordt geleverd met afrondingstypen, zoals hieronder weergegeven:

  • ROUND_CEILING: het zal afronden naar het oneindige,
  • ROUND_DOWN: de waarde wordt afgerond naar nul,
  • ROUND_FLOOR: het wordt afgerond naar -Infinity,
  • ROUND_HALF_DOWN: rondt af naar de dichtstbijzijnde waarde, richting nul,
  • ROUND_HALF_EVEN: rondt af naar de dichtstbijzijnde waarde, waarbij de waarde naar het dichtstbijzijnde even gehele getal gaat,
  • ROUND_HALF_UP: dit rondt af naar de dichtstbijzijnde waarde, waarbij de waarde verder van nul af ligt
  • ROUND_UP: er wordt afgerond waar de waarde van nul afgaat.

In decimalen helpt de methode quantize() om af te ronden op een vast aantal decimalen, en u kunt de te gebruiken afronding specificeren, zoals weergegeven in het onderstaande voorbeeld.
Voorbeeld:
Round() en decimale methoden gebruiken

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)

Output:

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

Samenvatting

  • Round(float_num, Num_of_decimals) is een ingebouwde functie die beschikbaar is in Python. Het geeft u het float-nummer terug dat wordt afgerond op de decimalen die als invoer worden opgegeven.
  • float_num: het floatgetal dat moet worden afgerond.
  • Aantal_decimalen: Dit is het aantal decimalen waarmee rekening moet worden gehouden bij het afronden.
  • Het retourneert een geheel getal als het aantal_decimalen niet is opgegeven, en een float-waarde als het aantal_decimalen is opgegeven.