在编写我自己的代码之外,是否有任何内置的Python函数只能将整数向下舍入?我正在寻找与round()
函数具有类似功能的东西,但会评估
myFunction(3900, -3)
为3000
,而不是4000
。
并且,如果没有符合该描述的内置函数,您对我自己的编码有什么建议吗?
答案 0 :(得分:3)
你可以使用这个简单的技巧:减去五十年/百/千/等。根据所需的精度,使用round()
内置。
这会给你这样的东西:
>>> round_down = lambda x, prec: round(x - 5 * (10 ** (prec - 1)) + 1, -prec)
>>> round_down(2900, 3)
2000
>>> round_down(290, 2)
200
请注意,在减去时,您必须将1添加到要传递给round
的数字,否则在您调用的极端情况下
round_down(3000, 3)
你实际上是在打电话
round(2500, -3)
将评估为2000
。
答案 1 :(得分:2)
您还可以使用诀窍在之前使用round
减去,以便它始终向下舍入并避免使用lambda
。
def fun(num,spots):
return (int(round(num - 0.5*10**(-spots), spots) ))
<强>输出:强>
>>>fun(3900, -3)
3000
>>>fun(32948, -2)
32900
>>>fun(3001, -3)
3000
答案 2 :(得分:0)
import math
def foo(a,b):
return (math.floor(a/(10**b)))*(10**b)