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


当前回答

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

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

print(len(count_number))

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

其他回答

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

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

这里是最简单的方法,不需要将int转换为字符串:

假设给出的数字为15位,例如;n = 787878899999999;

n=787878899999999 
n=abs(n) // we are finding absolute value because if the number is negative int to string conversion will produce wrong output

count=0 //we have taken a counter variable which will increment itself till the last digit

while(n):
    n=n//10   /*Here we are removing the last digit of a number...it will remove until 0 digits will left...and we know that while(0) is False*/
    count+=1  /*this counter variable simply increase its value by 1 after deleting a digit from the original number
print(count)   /*when the while loop will become False because n=0, we will simply print the value of counter variable

输入:

n=787878899999999

输出:

15

设数字为n,则n中的位数为:

math.floor(math.log10(n))+1

注意,这将为+ve个整数< 10e15给出正确答案。除此之外,返回类型的数学的精度限制。Log10开始起作用,结果可能相差1。我可以简单地在后面用len(str(n));这需要O(log(n))时间,相当于10的幂次迭代。

感谢@SetiVolkylany让我注意到这个限制。令人惊讶的是,看似正确的解决方案在实现细节中有警告。

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

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

print(len(count_number))

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

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

n = input("Enter number: ")
print(len(n))
n = int(n)