如何将数字四舍五入为10、100、1000、10000、100000

时间:2019-01-09 16:33:27

标签: python integer roundup

我想要一个函数,如果小于10,则将数字四舍五入;如果介于10到1000之间,则四舍五入至100,依此类推。

这将帮助解决数字连接问题,因此我不必将数字转为str并返回。

def roundup(n):
    if n < 0: return 0
    if n < 10: return 10
    if n < 100: return 100
    if n < 1000: return 1000
    if n < 10000: return 10000

我想知道是否存在一种自然的方法,而不仅仅是将'if'堆叠在一起

4 个答案:

答案 0 :(得分:6)

与python特定的问题相比,这更多的是数学问题,但是您实际上是在对数日志。

def round_base_10(x):
    if x < 0:
        return 0
    elif x == 0:
        return 10
    return 10**math.ceil(math.log10(x))

答案 1 :(得分:0)

另一个选项(无math):

def roundup(n):
    return 10**(len(str(n))-1)

答案 2 :(得分:0)

您可以使用幼稚的方法:

def roundup(n):
    top = 1
    while True:
        if n <= top:
            return top
        top *= 10

在Python2中您将需要top = 1L,但是在Python3中默认情况下,整数是长的。

答案 3 :(得分:0)

def roundup(n):
    if n < 0:
        return 0
    size = len(str(n))
    return int('1'.ljust(size+1, '0'))