digitSum=0
n=222222222222222222222222222222
while n!=0:
digitSum=digitSum+(n%10)
n=int(n/10)
print(digitSum)
输出应为60,而输出为86。
答案 0 :(得分:1)
这也应该有用。
digitSum=0
n=222222222222222222222222222222
stringValue = str(n)
length = len(stringValue)
digitSum = length * int(stringValue[0])
print(digitSum)
答案 1 :(得分:0)
使用a // b
进行整数除法,而不是int(a / b)
。
在循环的第一次迭代中,您的代码正在有效地执行int(222222222222222222222222222222 / 10)
。这会产生一个浮点值,您希望它是22222222222222222222222222222.2
,但由于浮点精度的限制,实际上是22222222222222223739180810240.0
。此值传播到算法的下一次迭代,显然会导致错误的答案。
另一方面,Python中的//
执行整数除法,这会导致所需的截断结果。因为Python具有无限的整数范围,即使数字非常大,这也能正常工作。因此222222222222222222222222222222 // 10
正确导致删除最后一位数字的相同数字。