[英]Division by 10 for large values of n in python gives inaccurate answers
我正在做一個簡單的問題,要解決2 ^ 1000的數字總和。 我知道,解決方案非常簡單。 但請看以下代碼片段:
n=2**1000
sum=0
while n>0:
sum+=n%10
n=int(n/10)
print(n)
print(sum)
上面的代碼段給出了錯誤的答案。 但是,如果我做了一些小改動:
n=2**1000
sum=0
while n>0:
sum+=n%10
n//=10 # changed
print(n)
print(sum)
那么答案是正確的。 有人可以告訴我這里有什么區別嗎?
(注意:僅當n
值較大時,才可以看到此差異。)
看起來您正在使用python3, //
運算符執行整數除法, /
運算符執行浮點除法,這對大的值會降低精度。
例如:
>>> int((2**1000 / 49) * 49) == 2**1000
False
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.