2015-04-06 62 views
3

除了我自己的編碼外,是否有任何內置的Python函數只能將整數向下舍入呢?我在尋找的東西具有類似功能的round()功能,但會,比方說,評估只有四捨五入的Python函數?

myFunction(3900, -3) 

3000,不4000

而且,如果沒有內置符合該描述的函數,您對我自己的編碼有任何建議嗎?

+0

什麼是 「-3」 是什麼意思? – tnknepp

+0

在循環函數中,它循環到小數點後的許多數字。 – TigerhawkT3

+0

它提供了round()函數將四捨五入的地方值。正整數超過小數點,負整數超過小數點。在這種情況下,-3表示舍入到最接近的千位數。 –

回答

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

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 
0
import math 
def foo(a,b): 

    return (math.floor(a/(10**b)))*(10**b)