我想数一个数字的阶乘的尾数零。当我把这个数字除以10的时候,我希望最后的零会被移除,但它没有。
def fact(num):
if (num==0 or num==1):
return 1
else:
return num*fact(num-1)
def num(a):
f = fact(a)
count = 0
while(f%10==0):
count=count+1
print(f)
f=int(f/10)
print(f)
return count
n=int(input())
while(n!=0):
a=int(input())
print(num(a))
n=n-1

发布于 2020-04-07 07:53:15
你需要替换:
f=int(f/10)使用
f = f // 10内部num()函数。它会解决你的问题。
解释:
f/10将数字转换为float。当你把那个float转换成int时,它就失去了一个大数字的精度。
您可以通过这样做来确认它:
a = 8320987112741390144276341183223364380754172606361245952449277696409600000000000000
print(int(a/10)) # prints: 832098711274139031630889608027340070244161333703152098685794054394185233318543360
print(a//10) # prints: 832098711274139014427634118322336438075417260636124595244927769640960000000000000https://stackoverflow.com/questions/61075108
复制相似问题