J'ai trouvé deux façons de prendre des sols en Python:
3.1415 // 1
et
import math
math.floor(3.1415)
Le problème avec la première approche est qu'elle renvoie un flottant (à savoir 3.0
). La deuxième approche semble maladroite et trop longue.
Existe-t-il des solutions alternatives pour prendre des sols en Python?
Tant que vos nombres sont positifs, vous pouvez simplement convertir en int
pour arrondir à l'entier suivant:
>>> int(3.1415)
3
Pour les nombres entiers négatifs, cela arrondira cependant.
Vous pouvez appeler int () sur le flotteur pour lancer vers l'int inférieur (pas évidemment le sol mais plus élégant)
int(3.745) #3
Sinon, appelez int sur le résultat du plancher.
from math import floor
f1 = 3.1415
f2 = 3.7415
print floor(f1) # 3.0
print int(floor(f1)) # 3
print int(f1) # 3
print int(f2) # 3 (some people may expect 4 here)
print int(floor(f2)) # 3
La deuxième approche est la voie à suivre, mais il existe un moyen de la raccourcir.
from math import floor
floor(3.1415)
Castez-le dans int
si vous ne voulez pas de float
int(3.1415 // 1)
Attention, prendre la parole et faire un casting sur un int n'est pas la même chose avec des nombres négatifs. Si vous voulez vraiment que le sol soit un entier, vous devez convertir en entier après avoir appelé math.floor ().
>>> int(-0.5)
0
>>> math.floor(-0.5)
-1.0
>>> int(math.floor(-0.5))
-1
from math import floor
def ff(num, step=0):
if not step:
return floor(num)
if step < 0:
mplr = 10 ** (step * -1)
return floor(num / mplr) * mplr
ncnt = step
if 1 > step > 0:
ndec, ncnt = .0101, 1
while ndec > step:
ndec *= .1
ncnt += 1
mplr = 10 ** ncnt
return round(floor(num * mplr) / mplr, ncnt)
Vous pouvez utiliser des nombres positifs/négatifs et des points flottants .1, .01, .001 ...