我在Python中找到了两种获取底线的方法:
3.1415 // 1
和
import math
math.floor(3.1415)
第一种方法的问题是它返回一个浮点(即3.0
)。第二种方法感觉笨拙且太长。
是否有替代解决方案用于在Python中获取地板?
答案 0 :(得分:57)
只要您的数字是正数,您只需转换为int
即可向下舍入到下一个整数:
>>> int(3.1415)
3
对于负整数,这将会四舍五入。
答案 1 :(得分:13)
你可以在float上调用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 :(得分:6)
第二种方法是要走的路,但有一种方法可以缩短它。
from math import floor
floor(3.1415)
答案 3 :(得分:3)
如果您不想要int
float
int(3.1415 // 1)
答案 4 :(得分:3)
请注意,采取底线并投射到int与负数不同。如果你真的想要地板作为整数,你应该在调用math.floor()后转换为int。
>>> int(-0.5)
0
>>> math.floor(-0.5)
-1.0
>>> int(math.floor(-0.5))
-1
答案 5 :(得分:0)
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 ...