Comment arrondir un nombre en Python (fonction round() et décimal)

Apprenez à arrondir les nombres à virgule flottante en Python. Comprenez l'arrondi de Banker, la précision décimale personnalisée et le formatage des flottants pour l'affichage.

Essayez cette solution dans l'éditeur

Aperçu

L'arithmétique à virgule flottante dans les ordinateurs peut parfois entraîner des problèmes de précision inattendus en raison de la façon dont les systèmes binaires stockent les décimales (par exemple, « 0,1 + 0,2 » évalué à « 0,30000000000000004 »). Lors de la présentation de chiffres aux utilisateurs ou de la préparation de métriques, l’arrondi des chiffres est une exigence courante. Python propose plusieurs façons d'y parvenir.

L'outil principal est la fonction intégrée `round(number, ndigits)`. Cela prend un nombre et un nombre de précision facultatif. Si « ndigits » est omis, il est arrondi à l'entier le plus proche. Si « ndigits » est fourni, il arrondit à ce nombre de décimales.

Une propriété clé de la fonction `round()` de Python est qu'elle utilise "l'arrondi du banquier" (arrondi de la moitié au pair). Lorsqu'un nombre est exactement à mi-chemin entre deux nombres entiers (par exemple, « 2,5 » ou « 3,5 »), Python arrondit au nombre *pair* le plus proche. Cela signifie que « round(2.5) » est « 2 » et « round(3.5) » est « 4 ». Bien que mathématiquement équitable sur de grands ensembles de données pour éviter un biais à la hausse, pour des calculs financiers précis, vous devez utiliser les outils de quantification du module « décimal ».

Sortie de code et d'exécution

Ce script montre l'arrondi des flottants à l'aide de la fonction d'arrondi intégrée, des exemples d'arrondi de Banker et du module décimal.

round_numbers.py
Essayez dans l'éditeur
from decimal import Decimal, ROUND_HALF_UP

val = 3.14159

# 1. Round to nearest integer
print("Nearest Integer:", round(val))

# 2. Round to 2 decimal places
print("Two decimals:", round(val, 2))

# 3. Banker's Rounding demonstration (rounds to nearest even)
print("round(2.5):", round(2.5)) # Nearest even is 2
print("round(3.5):", round(3.5)) # Nearest even is 4

# 4. Math rounding up (Traditional rounding) using decimal module
amount = Decimal("2.5")
rounded_up = amount.quantize(Decimal("1"), rounding=ROUND_HALF_UP)
print("Decimal ROUND_HALF_UP (2.5):", rounded_up)
Sortie terminale
Nearest Integer: 3
Two decimals: 3.14
round(2.5): 2
round(3.5): 4
Decimal ROUND_HALF_UP (2.5): 3

Mise en œuvre étape par étape

  • Appelez la fonction intégrée round(number) pour arrondir un flottant à l’entier entier le plus proche.
  • Passez un deuxième argument (par exemple, round(num, 2)) pour spécifier le nombre de décimales à conserver.
  • Utilisez le module décimal avec ROUND_HALF_UP pour des calculs d'arrondi financier stricts.

Foire aux questions

Pourquoi round(2.5) renvoie-t-il 2 au lieu de 3 en Python ?

Python utilise l'arrondi de Banker, qui arrondit les demi-nombres à l'entier pair le plus proche. Cela réduit les biais statistiques (arrondir la moitié des nombres entraîne toujours une légère dérive vers le haut sur de grands ensembles de données).

Comment arrondir un nombre toujours vers le haut ou toujours vers le bas ?

Importez le module mathématique et utilisez math.ceil(x) pour arrondir à l'entier supérieur, ou math.floor(x) pour arrondir à l'entier précédent.

Sujets connexes

Ressources Python recommandées

Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.