使用C++寫程式發現一個問題
如圖所示
我使用long long int k 儲存 pow(2,i)+1的計算結果
當i<53計算結果是正確的
i = 1 , k = 3
i = 2 , k = 5
i = 3 , k = 9
.
.
.
i = 52, k = 4503599627370497
i = 53, k = 9007199254740992 (X) (2^53=9007199254740992) (k沒有加一)
當程式改為
long long int k = pow(2, 53) ;
k = k + 1;
k的結果為9007199254740993 (O)
感覺跟有效位數有關,但又無法提出一個合理的解釋。