Cours
Arrondir des nombres à deux décimales est une technique essentielle en Python. Elle est particulièrement utile pour les calculs financiers, la présentation de données et les rapports scientifiques.
Python propose plusieurs méthodes pour un arrondi précis. Dans ce tutoriel, je vous montre comment arrondir un nombre à deux décimales en Python à l'aide de fonctions intégrées, de bibliothèques et de méthodes de formatage.
Si vous débutez comme analyste de données, je vous recommande le cours Introduction to Python de DataCamp pour apprendre les bases de Python pour la manipulation et la transformation de données. Notre tutoriel Python NumPy vous sera également utile si vous devez arrondir de grands tableaux de nombres dans des workflows d'analyse.
À retenir
-
Utilisez
round(number, 2)pour un arrondi arithmétique — la valeur est réellement modifiée. -
Utilisez
f"{number:.2f}"oustr.format()pour l'affichage uniquement — le float d'origine reste inchangé. -
Utilisez le module
decimallorsque vous avez besoin d'une précision décimale exacte (p. ex. calculs financiers). -
Utilisez
np.round(array, 2)pour arrondir un tableau NumPy entier en une seule instruction. -
Attention aux surprises liées à la précision des floats :
round(2.675, 2)renvoie2.67, et non2.68, à cause de la façon dont les nombres flottants sont stockés en mémoire.
Renforcer les compétences en matière d'apprentissage automatique
Comprendre l'arrondi et les décimales
Les décimales correspondent aux chiffres situés immédiatement après la virgule dans un nombre. Elles sont importantes car elles déterminent la précision du nombre : plus il y a de décimales, plus la valeur est précise, et inversement.
Arrondir un nombre consiste à ajuster ce nombre en réduisant le nombre de décimales. Cette technique sert généralement à simplifier un résultat tout en gardant de la cohérence entre les calculs. Néanmoins, arrondir à un certain nombre de décimales peut affecter l'exactitude des valeurs calculées en introduisant de petites erreurs.
Python propose différentes méthodes pour arrondir à deux décimales. Les exemples ci-dessous détaillent ces techniques.
Utiliser round() pour arrondir un nombre en Python
La fonction round() est la fonction native de Python pour arrondir les nombres flottants au nombre de décimales souhaité. Vous indiquez le nombre de décimales via le second argument. L'exemple ci-dessous affiche 34,15.
# Example number to be rounded
number = 34.14559
# Rounding the number to 2 decimal places
rounded_number = round(number, 2)
print(rounded_number)
# 34.15
Par défaut, round() utilise la règle "arrondi à l'entier pair" (round half to even) lorsque vous omettez le second argument. Avec cette règle (arrondi bancaire), lorsqu'une valeur est exactement à mi-chemin entre deux entiers, elle est arrondie vers l'entier pair le plus proche. Cette approche limite les erreurs d'arrondi cumulées.
Attention à la précision des floats avec round()
Une subtilité à connaître avant d'utiliser round() en finance. Essayez ceci :
print(round(2.675, 2)) # You might expect 2.68
# Output: 2.67
Le résultat est 2.67, et non 2.68. La valeur 2.675 ne peut pas être représentée exactement en virgule flottante binaire (IEEE 754) ; la valeur stockée est légèrement inférieure à 2.675, donc Python arrondit à la baisse.
Si vous avez besoin d'un arrondi exact pour des calculs financiers, utilisez le module decimal avec un mode d'arrondi explicite :
from decimal import Decimal, ROUND_HALF_UP
result = Decimal("2.675").quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)
print(result) # 2.68
Utiliser le formatage de chaînes pour arrondir un nombre en Python
Les techniques de formatage de chaînes sont pratiques pour arrondir à deux décimales, notamment lors de l'affichage d'un résultat.
Gardez à l'esprit qu'avec ces techniques, l'arrondi est produit pour l'affichage sous forme de chaîne, mais le nombre d'origine reste inchangé. Si vous effectuez des calculs sur la valeur initiale, ils se basent sur la valeur non arrondie, ce qui peut surprendre.
Arrondir avec l'opérateur %
L'opérateur % propose une méthode traditionnelle pour formater des nombres à deux décimales. Il permet de créer des chaînes formatées en insérant des valeurs dans des espaces réservés.
Dans l'exemple ci-dessous, f indique un nombre flottant et .2 précise le nombre de décimales.
# Example number to be rounded
number = 3.14159
# Using the % operator to round to 2 decimal places
formatted_number = "%.2f" % number
print(formatted_number)
# 3.14
Arrondir avec str.format()
La méthode str.format() offre une manière plus flexible de gérer des besoins de formatage plus complexes. Comme elle permet d'utiliser des espaces réservés nommés, les développeurs la préfèrent souvent à l'opérateur %. Dans l'exemple suivant, :.2f à l'intérieur des accolades spécifie un arrondi à deux décimales. Le code affichera 3.14.
# Example number to be rounded
number = 3.14159
# Using str.format() to round to 2 decimal places
formatted_number = "{:.2f}".format(number)
print(formatted_number)
# 3.14
Arrondir avec les f-strings (Python 3.6+)
Les f-strings sont apparues avec Python 3.6 et constituent aujourd'hui la façon privilégiée d'insérer des valeurs dans des chaînes. La syntaxe f-string est particulièrement claire pour l'arrondi : vous formatez l'affichage en une seule ligne, sans appel séparé. Le code ci-dessous affiche 14.68.
# Example number to be rounded
number = 14.67856
# Using f-strings to round to 2 decimal places
formatted_number = f"{number:.2f}"
print(formatted_number)
# 14.68
Utiliser format() pour arrondir un nombre en Python
La fonction intégrée format() prend une valeur et une spécification de format, puis renvoie une chaîne formatée. Contrairement à str.format(), vous passez le nombre directement plutôt que de l'insérer dans un gabarit. Le code ci-dessous affiche 345.69.
# Example number to be rounded
number = 345.68776
# Using the built-in format() to round to 2 decimal places
formatted_number = format(number, ".2f")
print(formatted_number)
# 345.69
Utiliser d'autres modules pour arrondir un nombre en Python
Au-delà du Python de base, plusieurs modules permettent d'arrondir des nombres. Voici trois exemples majeurs : math, decimal et NumPy.
Arrondir avec le module math
Le module math ne propose pas de fonction qui arrondit directement à un nombre précis de décimales. Cependant, vous pouvez le combiner avec de l'arithmétique pour arrondir à deux décimales.
La fonction math.floor() arrondit un nombre à l'entier inférieur. Pour arrondir à deux décimales, multipliez par 100, appliquez math.floor(), puis divisez par 100. Le code ci-dessous affiche 3.14.
# Import math module
import math
# Example number to be rounded
number = 3.14159
# Using math.floor() to round down to 2 decimal places
rounded_down = math.floor(number * 100) / 100
print(rounded_down)
# 3.14
De même, math.ceil() arrondit à l'entier supérieur. Pour arrondir à deux décimales, multipliez par 100, appliquez math.ceil(), puis divisez par 100. Le code ci-dessous affiche 3.15.
# Import the math module
import math
# Example number to be rounded
number = 3.14159
# Using math.ceil() to round up to 2 decimal places
rounded_up = math.ceil(number * 100) / 100
print(rounded_up)
# 3.15
Arrondir avec le module decimal
Le module decimal de Python est utile pour arrondir avec une précision décimale exacte via la méthode .quantize(). Dans l'exemple ci-dessous, nous fixons la précision à 0.01 pour indiquer un arrondi à deux décimales.
# Import the decimal module
from decimal import Decimal
# Example number to be rounded
number = Decimal("18.73869")
# Define the rounding precision to 2 decimal places
precision = Decimal('0.01')
# Using the quantize method with ROUND_UP
# to round the number up to 2 decimal places
rounded_number = number.quantize(precision)
print(rounded_number)
# 18.74
Si vous recherchez un comportement d'arrondi à la hausse spécifique, consultez notre dernier tutoriel How to Round Up a Number in Python pour en savoir plus sur l'utilisation des modules math et decimal, ainsi que d'autres techniques pour forcer un arrondi à la hausse plutôt qu'à la baisse. Pour une vision plus large de la transformation de données, parcourez notre parcours Data Analyst with Python pour développer vos compétences analytiques.
Arrondir avec NumPy
Avec des tableaux NumPy, utilisez np.round() pour arrondir tous les éléments d'un coup. C'est plus rapide et plus lisible que de boucler manuellement.
import numpy as np
prices = np.array([1.2345, 9.8765, 3.14159])
rounded_prices = np.round(prices, 2)
print(rounded_prices)
# [1.23 9.88 3.14]
np.round() applique la même règle d'arrondi bancaire que la fonction round() de Python. La méthode .round() fonctionne de la même façon sur les DataFrames et Series pandas :
import pandas as pd
df = pd.DataFrame({"price": [1.2345, 9.8765, 3.14159]})
df["price_rounded"] = df["price"].round(2)
print(df)
# price price_rounded
# 0 1.2345 1.23
# 1 9.8765 9.88
# 2 3.14159 3.14
Pour une vue d'ensemble de la transformation de données avec pandas, consultez notre tutoriel pandas.
Quand utiliser chaque méthode d'arrondi en Python
Voici un aide-mémoire pour choisir la bonne approche :
| Méthode | Idéale pour | Modifie la valeur ? | Retourne |
|---|---|---|---|
round(x, 2) |
Arithmétique générale | Oui | float |
f"{x:.2f}" |
Affichage / impression | Non | str |
str.format() |
Affichage / impression | Non | str |
% operator |
Affichage / impression (héritage) | Non | str |
format(x, ".2f") |
Affichage / valeur unique | Non | str |
math.floor() / ceil() |
Toujours arrondir vers le bas / vers le haut | Oui | float |
Decimal.quantize() |
Finance / décimal exact | Oui | Decimal |
np.round(arr, 2) |
Tableaux NumPy | Oui | ndarray |
Quelques règles simples pour orienter votre choix :
-
Affichage uniquement ? Utilisez une f-string (
f"{x:.2f}"). Une ligne, pas d'import, et aucune incidence sur la valeur d'origine. -
Besoin de continuer les calculs ? Utilisez
round(x, 2). Elle renvoie un float avec lequel vous pouvez poursuivre. -
Code financier ou comptable ? Utilisez
Decimal.quantize(). Les surprises de précision des floats (round(2.675, 2) == 2.67) n'arrivent pas avec le moduledecimal. -
Toujours vers le haut ou vers le bas ? Utilisez
math.ceil()oumath.floor(). Elles ignorent les règles d'arrondi classiques. -
Vous travaillez avec un tableau NumPy ou une colonne pandas ? Utilisez
np.round(arr, 2)ouseries.round(2). Les deux traitent l'ensemble en une fois. -
Maintenance d'ancien code ? L'opérateur
%fonctionne toujours, mais les f-strings l'ont remplacé depuis Python 3.6 — privilégiez-les dans le nouveau code.
Pour conclure
Arrondir à deux décimales est une technique clé pour gagner en précision dans les calculs financiers et scientifiques. Dans cet article, nous avons passé en revue différentes méthodes : fonctions natives, formatage de chaînes et module math. L'important est de choisir la méthode adaptée à vos contraintes, qu'il s'agisse de précision ou de style d'affichage. Je vous encourage à pratiquer ces approches avec divers exemples pour identifier celle qui convient le mieux à vos cas d'usage.
Pour aller plus loin en Python, découvrez notre parcours de compétences Python Programming, qui couvre les fonctions, les décorateurs et des motifs Python avancés. Notre parcours de carrière Python Developer est également conçu pour vous faire monter en compétences en tant que développeur tout en abordant des structures de données et des algorithmes avancés.
Devenez un scientifique ML
Questions fréquentes
Quelle est la manière la plus simple d'arrondir un nombre à deux décimales en Python ?
La manière la plus simple d'arrondir un nombre à deux décimales consiste à utiliser la fonction native round().
Pourquoi un nombre est-il arrondi à l'entier le plus proche avec la fonction round() ?
Par défaut, round() applique l'arrondi à l'entier pair. Pour arrondir un nombre à deux décimales, vous devez fournir 2 comme second argument, c.-à-d. round(3.14159, 2).
Comment utilise-t-on la fonction format() pour arrondir un nombre à deux décimales ?
La fonction format() permet d'arrondir un nombre au nombre de décimales souhaité et de l'afficher dans une chaîne formatée.
Qu'est-ce que l'arrondi à l'entier pair (round half to even) ?
L'arrondi à l'entier pair (banker's rounding) consiste à arrondir une valeur exactement à mi-chemin entre deux entiers vers l'entier pair le plus proche.
Le module math permet-il d'arrondir un nombre à deux décimales en Python ?
Vous ne pouvez utiliser math.floor() et math.ceil() qu'en les combinant avec des opérations arithmétiques pour arrondir à un nombre précis de décimales.
Pourquoi round(2.675, 2) renvoie 2.67 au lieu de 2.68 ?
Il s'agit d'un problème de précision en virgule flottante. La valeur 2.675 ne peut pas être représentée exactement en binaire (IEEE 754) ; la valeur stockée est légèrement inférieure à 2.675, donc Python arrondit à 2.67.
Pour éviter cela en finance, utilisez le module decimal avec un mode d'arrondi explicite : Decimal("2.675").quantize(Decimal("0.01"), rounding=ROUND_HALF_UP) renvoie bien 2.68.
Comment arrondir toutes les valeurs d'un DataFrame pandas à 2 décimales ?
Utilisez la méthode .round() sur un DataFrame ou une Series. Pour arrondir une seule colonne : df["price"] = df["price"].round(2). Pour arrondir toutes les colonnes numériques d'un coup : df = df.round(2).

