在Python中,如何找到整数中的位数?


当前回答

好吧,如果不转换为字符串,我会这样做:

def lenDigits(x): 
    """
    Assumes int(x)
    """

    x = abs(x)

    if x < 10:
        return 1

    return 1 + lenDigits(x / 10)

最小递归FTW

其他回答

from math import log10
digits = lambda n: ((n==0) and 1) or int(log10(abs(n)))+1

科学记数法格式,去掉指数:

int("{:.5e}".format(1000000).split("e")[1]) + 1

我不知道速度如何,但很简单。

请注意小数点后的有效数位数(“5”在”。如果5e”将科学记数法的小数部分舍入到另一个数字,则可能会出现问题。我把它设得任意大,但可以反映出你所知道的最大数字的长度。

如果你必须要求用户输入,然后你必须数出有多少个数字,那么你可以这样做:

count_number = input('Please enter a number\t')

print(len(count_number))

注意:永远不要使用int作为用户输入。

def digits(n)
    count = 0
    if n == 0:
        return 1
    
    if n < 0:
        n *= -1

    while (n >= 10**count):
        count += 1
        n += n%10

    return count

print(digits(25))   # Should print 2
print(digits(144))  # Should print 3
print(digits(1000)) # Should print 4
print(digits(0))    # Should print 1

计算w/o将整数转换为字符串的位数:

x=123
x=abs(x)
i = 0
while x >= 10**i:
    i +=1
# i is the number of digits