Python De functie round() met voorbeelden.

โšก Slimme samenvatting

Python round() is een ingebouwde functie die een drijvende-komma- of integerwaarde retourneert, afgerond op een opgegeven aantal decimalen. Bij gelijke aantallen decimalen wordt de bankiersafronding gebruikt om de doorslag te geven door naar het dichtstbijzijnde even cijfer te gaan.

  • ๐Ÿ”˜ Syntax: round(number, ndigits) accepteert de afrondingswaarde en een optioneel aantal cijfers, dat standaard op nul staat.
  • โ˜‘๏ธ Retourtype: Als je ndigits weglaat, krijg je een geheel getal terug, terwijl je met ndigits een zwevendekommagetal terugkrijgt.
  • โœ… Afronding door de bankier: Waarden halverwege worden afgerond naar het dichtstbijzijnde even getal, dus round(2.5) geeft 2 terug.
  • ๐Ÿงช Negatieve getallen: Afronding geldt ook voor negatieve getallen: -2.8 wordt -3 en -1.5 wordt -2.
  • ๏ธ Precisiegereedschappen: De decimal-module en de round()-functie van NumPy verzorgen afronding met vaste precisie en afronding naar arrays.
  • ๐Ÿค– AI-workflows: Machine learning-code rondt statistieken, waarschijnlijkheden en gewichten af โ€‹โ€‹voor overzichtelijkere logboekregistratie en rapportage.

Python round() Functie

Wat is de functie round() in Python?

Python round() is een ingebouwde functie die beschikbaar is met PythonHet retourneert een zwevendekommagetal dat wordt afgerond op het aantal decimalen dat als invoer is gegeven.

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)

Kenmerken

  • float_num: Het te afronden zwevendekommagetal.
  • aantal_decimalen: (optioneel) Het aantal decimalen dat bij het afronden in aanmerking moet worden genomen. Dit is optioneel; indien niet opgegeven, is de standaardwaarde 0 en wordt er afgerond naar het dichtstbijzijnde hele getal.

Beschrijving

De round()-methode accepteert twee argumenten:

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

Het tweede argument is optioneel en heeft als standaardwaarde 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 gegeven getal achter de komma is:

  • Als het resultaat groter of gelijk is aan 5, wordt er 1 bij de eindwaarde opgeteld.
  • Als de waarde kleiner is dan 5, wordt de uiteindelijke waarde ongewijzigd geretourneerd, tot op het aangegeven aantal decimalen.

Winstwaarde

De functie retourneert een geheel getal als het aantal decimalen niet is opgegeven en een zwevendekommagetal als het aantal decimalen wel is opgegeven. Houd er rekening mee dat de waarde wordt afgerond naar +1 als het aantal decimalen groter of gelijk is aan 5; anders wordt de waarde ongewijzigd geretourneerd, tot het opgegeven aantal decimalen.

Hoeveel impact kan afronding hebben? (Afronding versus afknotting)

Het beste voorbeeld om de impact van afronding te illustreren is de aandelenmarkt. In het verleden, bijvoorbeeld in 1982, Beurs van Vancouver (VSE) werd gebruikt om de aandelenkoersen bij elke transactie af te ronden tot drie decimalen.

Dit gebeurde bijna 3000 keer per dag. De cumulatieve afkappingen leidden 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 onderstaande drijvende-komma getallen als aandelenkoersen. Op dit moment genereer ik ze voor een periode van 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 illustreren, heb ik een klein stukje code geschreven waarin je in eerste instantie de getallen tot 3 decimalen gebruikt, oftewel het getal na 3 decimalen afkapt.

Ik heb de oorspronkelijke totaalwaarde, het totaal dat voortkomt uit de afgekorte waarden, en het verschil tussen de oorspronkelijke en de afgekorte waarde.

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

Hieronder staan โ€‹โ€‹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 de oorspronkelijke en de afgekorte waarde is 499.9016193868665, en na afronding (round()) is dit 0.04661938686695066.

Het verschil lijkt erg groot, en het voorbeeld laat zien hoe de round()-methode helpt bij het berekenen van een resultaat dat bijna net zo nauwkeurig is.

Voorbeeld: Afrondingsvlotter Numbers

In dit programma zullen we zien hoe afronden werkt bij drijvende-kommagetallen.

# 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 kijken naar een paar voorbeelden van hoe afronden werkt bij 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: NumPy-arrays afronden

Hoe rond je af in NumPy? arrays in Python?

Om dit op te lossen, kunnen we gebruikmaken van de NumPy-module en de methode numpy.round() of numpy.around() gebruiken, zoals in het onderstaande voorbeeld wordt getoond.

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 numpy.round() zoals hierboven getoond.

Voorbeeld: decimale module

Naast de functie round(), Python Het bevat een decimale module die helpt bij het nauwkeuriger verwerken van decimale getallen.

De module Decimal biedt verschillende afrondingstypen, zoals hieronder weergegeven:

  • ROND PLAFOND: Het zal afronden naar oneindigheid.
  • AFRONDEN NAAR BENEDEN: Het zal de waarde afronden naar nul.
  • RONDE VLOER: Het zal afronden naar -oneindig.
  • AFRONDEN_HALVE_OMLAAG: Het wordt afgerond naar de dichtstbijzijnde waarde richting nul.
  • ROND_HALF_EVEN: Het wordt afgerond naar de dichtstbijzijnde waarde, met de dichtstbijzijnde even hele getallen als resultaat.
  • AFRONDEN_HALVE_OMHOOG: Het wordt afgerond naar de dichtstbijzijnde waarde die van nul afwijkt.
  • ROUND_UP: Het zal afronden waar de waarde van nul afwijkt.

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

Veelgestelde vragen

Nee. Python Bij 3 wordt afgerond naar een half (bankiersafronding) bij gelijke waarden, dus round(0.5) is 0, round(2.5) is 2 en round(3.5) is 4. Dit vermindert de cumulatieve vertekening.

Omdat 2.675 niet exact in binaire drijvende-kommaweergave kan worden opgeslagen, maar feitelijk als ongeveer 2.6749999999999998, rondt round() naar beneden af. Voor een exact resultaat kunt u decimal.Decimal('2.675') gebruiken.

Gebruik de math-module: math.ceil(x) rondt altijd naar boven af, math.floor(x) rondt altijd naar beneden af โ€‹โ€‹en int(x) rondt af naar nul. round() zelf kan geen vaste richting afdwingen.

Geef een negatief tweede argument mee: round(12345, -1) geeft 12340, round(12345, -2) geeft 12300 en round(12345, -3) geeft 12000. Negatieve ndigits rondt af naar links van de komma.

`round(x, 2)` wijzigt de waarde die later in wiskundige bewerkingen wordt gebruikt, terwijl `f'{x:.2f}'` alleen de weergave opmaakt en het getal intact laat. Gebruik `round()` voor berekeningen en `f-strings` voor uitvoer.

Nee. Numbers Omdat de waarden onveranderlijk zijn, retourneert round() een nieuwe waarde zonder de invoer te wijzigen. Wijs er bijvoorbeeld een waarde aan toe, zoals result = round(3.14159, 2); de oorspronkelijke variabele behoudt de volledige precisie.

Machine learning-code rondt nauwkeurigheids-, verlies- en waarschijnlijkheidswaarden af โ€‹โ€‹voor leesbare logboeken en om voorspellingen aan klasselabels te koppelen. Behoud de volledige precisie voor gradiรซntberekeningen en rond alleen de uiteindelijk weergegeven statistieken af.

Ja. AI-assistenten zoals GitHub Copilot vullen automatisch round(), np.round() en decimale afronding aan op basis van een opmerking of functienaam, en tools voor AI zetten handmatige opmaak om in round()-aanroepen, hoewel de gekozen precisie nog moet worden gecontroleerd.

Vat dit bericht samen met: