En Python, ๐ฆโ๐โ๐ญโ๐กโ.๐โ๐ฅโ๐จโ๐จโ๐ซโ() et ๐ฆโ๐โ๐ญโ๐กโ.๐โ๐โ๐ขโ๐ฅโ() sont utilisรฉs pour arrondir vers le bas et vers le haut les nombres ร virgule flottante ( ๐โ๐ฅโ๐จโ๐โ๐ญโ ).
- Arrondir vers le bas (= prendre la parole) : ๐ฆโ๐โ๐ญโ๐กโ.๐โ๐ฅโ๐จโ๐จโ๐ซโ()
- Arrondir (= prendre le plafond) : ๐ฆโ๐โ๐ญโ๐กโ.๐โ๐โ๐ขโ๐ฅโ()
- Diffรฉrence entre ๐ฆโ๐โ๐ญโ๐กโ.๐โ๐ฅโ๐จโ๐จโ๐ซโ() et ๐ขโ๐งโ๐ญโ()
- Rond vers l’infini
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'>
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
๐ฆโ๐โ๐ญโ๐กโ.๐โ๐โ๐ขโ๐ฅโ(๐ฑโ) 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
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 ๐ขโ๐งโ๐ญโ() .