Skip to content

En Python, ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐จโ€Œ๐ซโ€Œ() et ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐œโ€Œ๐žโ€Œ๐ขโ€Œ๐ฅโ€Œ() sont utilisรฉs pour arrondir vers le bas et vers le haut les nombres ร  virgule flottante ( ๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐šโ€Œ๐ญโ€Œ ).

Notez que ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐จโ€Œ๐ซโ€Œ() arrondit vers l’infini nรฉgatif et ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐œโ€Œ๐žโ€Œ๐ขโ€Œ๐ฅโ€Œ() arrondit vers l’infini positif.

Voici un rรฉsumรฉ des rรฉsultats. Vous pouvez utiliser ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ() pour arrondir vers zรฉro (c’est-ร -dire tronquer ou arrondir en s’รฉloignant de l’infini), mais l’arrondi vers l’infini nรฉcessite une fonction personnalisรฉe abordรฉe plus loin.

print(math.floor(10.123)) # 10 print(math.floor(-10.123)) # -11 print(math.ceil(10.123)) # 11 print(math.ceil(-10.123)) # -10 print(int(10.123)) # 10 print(int(-10.123)) # -10 

Vous pouvez utiliser ๐ซโ€Œ๐จโ€Œ๐ฎโ€Œ๐งโ€Œ๐โ€Œ() pour arrondir de moitiรฉ ร  paire.

Pour arrondir vers le haut et vers le bas les รฉlรฉments d’un tableau NumPy ( ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ ), consultez l’article suivant.

Arrondir vers le bas (= prendre la parole) : ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐จโ€Œ๐ซโ€Œ()

Utilisez ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐จโ€Œ๐ซโ€Œ() pour arrondir vers le bas. Elle renvoie un entier ( ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ ).

import math print(math.floor(10.123)) # 10 print(math.floor(10.987)) # 10 print(type(math.floor(10.123))) # <class 'int'> 

Bien que cette fonction laisse les entiers ( ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ ) gรฉnรฉrer, elle gรฉnรจre une erreur pour les types non numรฉriques comme les chaรฎnes ( ๐ฌโ€Œ๐ญโ€Œ๐ซโ€Œ ), qui n’ont pas de mรฉthode __๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐จโ€Œ๐ซโ€Œ__() .

print(math.floor(10)) # 10 # print(math.floor('10')) # TypeError: must be real number, not str print(hasattr(10, '__floor__')) # True print(hasattr('10', '__floor__')) # False 

๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐จโ€Œ๐ซโ€Œ(๐ฑโ€Œ) renvoie le plancher de ๐ฑโ€Œ , le plus grand entier infรฉrieur ou รฉgal ร  ๐ฑโ€Œ . Autrement dit, il arrondit ร  moins lโ€™infini.

Pour les valeurs nรฉgatives, les rรฉsultats sont les suivants.

print(math.floor(-10.123)) # -11 print(math.floor(-10.987)) # -11 

Pour tronquer les valeurs absolues sans changer le signe, c’est-ร -dire pour arrondir vers zรฉro, utilisez ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ() dรฉcrit ci-dessous.

Arrondir (= prendre le plafond) : ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐œโ€Œ๐žโ€Œ๐ขโ€Œ๐ฅโ€Œ()

Utilisez ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐œโ€Œ๐žโ€Œ๐ขโ€Œ๐ฅโ€Œ() pour arrondir au chiffre supรฉrieur. Elle renvoie un entier ( ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ ).

import math print(math.ceil(10.123)) # 11 print(math.ceil(10.987)) # 11 print(type(math.ceil(10.123))) # <class 'int'> 
source: math_ceil.py

Bien que cette fonction laisse les entiers ( ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ ) gรฉnรฉrรฉs, elle gรฉnรจre une erreur pour les types non numรฉriques comme les chaรฎnes ( ๐ฌโ€Œ๐ญโ€Œ๐ซโ€Œ ), qui n’ont pas de mรฉthode __๐œโ€Œ๐žโ€Œ๐ขโ€Œ๐ฅโ€Œ__() .

print(math.ceil(10)) # 10 # print(math.ceil('10')) # TypeError: must be real number, not str print(hasattr(10, '__ceil__')) # True print(hasattr('10', '__ceil__')) # False 
source: math_ceil.py

๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐œโ€Œ๐žโ€Œ๐ขโ€Œ๐ฅโ€Œ(๐ฑโ€Œ) renvoie le plafond de ๐ฑโ€Œ , le plus petit entier supรฉrieur ou รฉgal ร  ๐ฑโ€Œ . Autrement dit, il arrondit ร  lโ€™infini positif.

Pour les valeurs nรฉgatives, les rรฉsultats sont les suivants.

print(math.ceil(-10.123)) # -10 print(math.ceil(-10.987)) # -10 
source: math_ceil.py

Pour arrondir la valeur absolue sans changer le signe, c’est-ร -dire pour arrondir vers l’infini, vous devez dรฉfinir une fonction personnalisรฉe dรฉcrite ci-dessous.

Diffรฉrence entre ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐จโ€Œ๐ซโ€Œ() et ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ()

Vous pouvez รฉgalement utiliser ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ() pour arrondir vers le bas.

๐ขโ€Œ๐งโ€Œ๐ญโ€Œ() renvoie le mรชme rรฉsultat que ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐จโ€Œ๐ซโ€Œ() pour les valeurs positives.

print(int(10.123)) # 10 print(int(10.987)) # 10 print(int(10)) # 10 print(type(int(10.123))) # <class 'int'> 

Le rรฉsultat pour les valeurs nรฉgatives est diffรฉrent de ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐จโ€Œ๐ซโ€Œ() .

Alors que ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐จโ€Œ๐ซโ€Œ() arrondit vers moins l’infini, ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ() arrondit vers zรฉro.

print(int(-10.123)) # -10 print(int(-10.987)) # -10 

De plus, ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ() peut convertir des chaรฎnes ( ๐ฌโ€Œ๐ญโ€Œ๐ซโ€Œ ) en entiers ( ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ ). Bien qu’il ne puisse pas convertir directement des chaรฎnes de nombres ร  virgule flottante, il peut gรฉrer des chaรฎnes binaires ou hexadรฉcimales ร  l’aide du deuxiรจme argument, ๐›โ€Œ๐šโ€Œ๐ฌโ€Œ๐žโ€Œ .

print(int('10')) # 10 # print(int('10.123')) # ValueError: invalid literal for int() with base 10: '10.123' print(int('FF', 16)) # 255 

Rond vers l’infini

Compte tenu des valeurs nรฉgatives, il existe quatre faรงons d’arrondir vers le haut et vers le bas.

Comme dรฉcrit ci-dessus, vous pouvez utiliser les fonctions suivantes pour arrondir :

  • Arrondir vers moins l’infini : ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐จโ€Œ๐ซโ€Œ()
  • Arrondir vers l’infini positif : ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐œโ€Œ๐žโ€Œ๐ขโ€Œ๐ฅโ€Œ()
  • Arrondir vers zรฉro : ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ()
  • Rond vers l’infini
print(math.floor(10.123)) # 10 print(math.floor(-10.123)) # -11 print(math.ceil(10.123)) # 11 print(math.ceil(-10.123)) # -10 print(int(10.123)) # 10 print(int(-10.123)) # -10 

Par exemple, vous pouvez dรฉfinir une fonction personnalisรฉe qui arrondit vers l’infini comme suit.

def round_towards_infinity(x): return int(math.copysign(math.ceil(abs(x)), x)) print(round_towards_infinity(10.123)) # 11 print(round_towards_infinity(-10.123)) # -11 

Cette fonction personnalisรฉe utilise ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() pour obtenir la valeur absolue, ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐œโ€Œ๐žโ€Œ๐ขโ€Œ๐ฅโ€Œ() pour arrondir au chiffre supรฉrieur et ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐œโ€Œ๐จโ€Œ๐ฉโ€Œ๐ฒโ€Œ๐ฌโ€Œ๐ขโ€Œ๐ โ€Œ๐งโ€Œ() pour conserver le signe d’origine. Le ๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐šโ€Œ๐ญโ€Œ rรฉsultant de ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐œโ€Œ๐จโ€Œ๐ฉโ€Œ๐ฒโ€Œ๐ฌโ€Œ๐ขโ€Œ๐ โ€Œ๐งโ€Œ() est ensuite converti en entier ร  l’aide de ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ() .