Pythonでフロアを取得する2つの方法を見つけました。
3.1415 // 1
そして
import math
math.floor(3.1415)
最初のアプローチの問題は、float(つまり3.0
)。 2番目のアプローチは不器用で長すぎます。
Pythonでフロアを取得するための代替ソリューションはありますか?
数値が正である限り、単にint
に変換して次の整数に切り捨てることができます。
>>> int(3.1415)
3
ただし、負の整数の場合、これは切り上げられます。
フロートでint()を呼び出して、より低いint(明らかに床ではなく、よりエレガントな)にキャストできます。
int(3.745) #3
または、フロア結果でintを呼び出します。
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
2番目のアプローチは進むべき方法ですが、短縮する方法があります。
from math import floor
floor(3.1415)
int
が必要ない場合は、float
にキャストします
int(3.1415 // 1)
床を取り、intにキャストすることは負の数と同じではないことに注意してください。フロアを整数として本当に必要とする場合は、math.floor()を呼び出した後にintにキャストする必要があります。
>>> 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)
正/負の数と浮動小数点.1、.01、.001 ...を使用できます。