簡體   English   中英

在python中將n的大值除以10得到的答案不正確

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM