Comment arrondir les valeurs numériques en Python

Vous voulez arrondir un nombre à virgule flottante à un nombre en virgule fixe. Pour un arrondissage simple, utilisez la fonction round(valeur, nombre_de_décimaux) intégrée. Par exemple:

>>> round(1.23, 1)
1.2
>>> round(1.27, 1)
1.3
>>> round(-1.27, 1)
-1.3
>>> round(1.25361,3)
1.254
>>>

Lorsqu’une valeur est exactement à mi-chemin entre deux choix, le comportement de la fonction round est d’arrondir au chiffre pair le plus proche. C’est-à-dire que des valeurs telles que 1,5 ou 2,5 sont arrondies à 2.

Le nombre de chiffres donné à round() peut être négatif, auquel cas l’arrondi a lieu pour des dizaines, des centaines, des milliers, et ainsi de suite. Par exemple:

>>> a = 1627731
>>> round(a, -1)
1627730
>>> round(a, -2)
1627700
>>> round(a, -3)
1628000
>>>

Ne confondez pas l’arrondi avec le formatage d’une valeur de sortie. Si votre but est simplement de sortir une valeur numérique avec un certain nombre de décimales, vous n’avez généralement pas besoin d’utiliser round().

Au lieu de cela, il suffit de spécifier la précision souhaitée lors du formatage. Par exemple:

>>> x = 1.23456
>>> format(x, '0.2f')
'1.23'
>>> format(x, '0.3f')
'1.235'
>>> 'La valeur est {:0.3f}'.format(x)
'La valeur est 1.235'
>>>

De plus, résistez à l’envie d’arrondir les nombres à virgule flottante pour ” corriger ” les problèmes de précision perçus. Par exemple, vous pourriez être enclin à le faire:

>>> a = 2.1
>>> b = 4.2
>>> c = a + b
>>> c
6.300000000000001
>>> c = round(c, 2)     
>>> c
6.3
>>>

Pour la plupart des applications en virgule flottante, il n’est tout simplement pas nécessaire (ou recommandé) de le faire. Bien que de petites erreurs soient introduites dans les calculs, le comportement de ces erreurs est compris et toléré.

S’il est important d’éviter de telles erreurs (p. ex., dans les applications financières), considérez l’utilisation du module decimal, qui est discuté dans l’article “Exécution de calculs précis sur des nombres à virgule fixe”.

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here