Getallen afronden in Python

In dit artikel laten we je zien hoe je op verschillende manieren getallen in Python kunt afronden:
1. De eerste manier is de meest gebruikte waarbij met de standaard round() functie getallen automatisch worden afgerond naar een geselecteerd punt achter de komma.
2. De tweede manier biedt extra precisie door middel van de decimal module.
3. De derde manier stelt je in staat om specifiek naar boven of beneden af te ronden via de floor() en ceil() functies.

Met deze toepassingen kun je bijvoorbeeld een kommagetal afronden naar een heel getal, of een getal afronden naar twee decimalen.

Afronden met de round()-functie

Het is in Python erg eenvoudig om getallen af te ronden. Dit doe je namelijk met de round()-functie. Met round()-functie kun je kommagetallen afronden tot op bepaalde decimalen en je kunt een kommagetal afronden naar een rond getal. De syntax van de round functie is als volgt:

round(number, digits)


Tussen de haakjes van round is er ruimte voor twee waarden:
1. Number: Hier plaats je het getal dat je wilt afronden. Dit kan ook een variabele zijn.
2. Digits: Hier vul je in op hoeveel decimalen je het getal wilt afronden. De standaardwaarde hiervoor is 0. Dat wil zeggen dat wanneer je hier niets invult dat ‘Number’ afgerond wordt naar een heel getal.

In de praktijk ziet dit er als volgt uit:

# Afronden op twee decimalen.
x = round(35.779853094, 2)
print(x)
# Resultaat: x = 35.78

# Afronden naar het dichtstbijzijnde ronde getal.
print(round(16.5811))
# Resultaat: 17

Nauwkeurig getallen afronden met de Python decimal module

Wil je een getal specifiek op een getal achter de komma afronden? Dan kun je altijd op safe spelen door de uitgebreide decimal module te gebruiken. Binnen de decimal module vind je een decimal functie. Deze functie werkt grotendeels hetzelfde als de round-functie.

import decimal
x = decimal.Decimal("77.1239")
print(round(x,3))
# Resultaat: 77.124

Meer informatie over de decimal module vind je hier.

Afronden naar een specifiek getal (floor en ceiling functions)

Je hebt hierboven kunnen zien hoe de round functie getallen automatisch afrondt. Maar wat als dit specifiek naar een bepaald getal moet? Bijvoorbeeld: Altijd naar boven afronden. Of standaard naar beneden afronden? Dat kan! Dit werkt alleen net iets anders.

Een voorbeeld van het probleem met de round functie: Stel je hebt het getal 5.7444444449 en je wilt dit afronden naar 5.75. Hoe zou je dit doen? Met het gebruik van round(5.7444444449, 2) wordt dit getal afgerond naar 5.74.

Om het gewenste getal te verkrijgen dienen we gebruik te maken van een ‘floor’ of ‘ceiling’ functie. De namen van deze functies spreken al redelijk voor zich. Bij een floor functie rond je het getal af naar beneden, en bij de ceiling functie wordt het getal naar boven afgerond. Deze functies genaamd ceil() en floor() vind je in de math module. De syntax van deze functies is als volgt:

# Eerst importeer je de 'math' module
import math 

# Om het getal naar beneden af te ronden:
math.floor(x)
# Dit geeft een rond getal terug dat niet kleiner is dan x

# Om het getal naar boven af te ronden:
math.ceil(x)
# Dit geeft een getal terug dat niet groter is dan x

Bekijk onderstaand voorbeeld in je code editor. Om het effect van beide functies goed weer te geven gebruiken we ook negatieve getallen.

import math

# De functie math.floor() retourneert de grootste gehele getal dat kleiner is dan of gelijk is aan het gegeven getal.
# Bereken en print de vloerwaarde van 15.45
vloerwaarde_positief = math.floor(15.45)
print("De vloerwaarde van 15.45 is:", vloerwaarde_positief)

# Bereken en print de vloerwaarde van -51.33
vloerwaarde_negatief = math.floor(-51.33)
print("De vloerwaarde van -51.33 is:", vloerwaarde_negatief)

# De functie math.ceil() retourneert de kleinste gehele getal dat groter is dan of gelijk is aan het gegeven getal.
# Bereken en print de plafondwaarde van 15.45
plafondwaarde_positief = math.ceil(15.45)
print("De plafondwaarde van 15.45 is:", plafondwaarde_positief)

# Bereken en print de plafondwaarde van -51.33
plafondwaarde_negatief = math.ceil(-51.33)
print("De plafondwaarde van -51.33 is:", plafondwaarde_negatief)

Het resultaat van bovenstaande code is: