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


当前回答

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

其他回答

您可以使用以下解决方案:

n = input("Enter number: ")
print(len(n))
n = int(n)
from math import log10
digits = lambda n: ((n==0) and 1) or int(log10(abs(n)))+1
>>> a=12345
>>> a.__str__().__len__()
5

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

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

    x = abs(x)

    if x < 10:
        return 1

    return 1 + lenDigits(x / 10)

最小递归FTW

Python 2。* int需要4或8字节(32或64位),这取决于你的Python版本。sys。Maxint(2**31-1用于32位int, 2**63-1用于64位int)将告诉您两种可能性中哪一种获得。

在Python 3中,int(就像Python 2中的long)可以取任意大小,直到可用内存的数量;sys。Getsizeof为任何给定值提供了一个很好的指示,尽管它也计算了一些固定开销:

>>> import sys
>>> sys.getsizeof(0)
12
>>> sys.getsizeof(2**99)
28

如果像其他答案所建议的那样,您正在考虑整数值的某个字符串表示,那么只需取该表示的len,以10为基底或以其他方式!