2017-07-31 23 views
-1

在Python司在Python INT(3分之1000000000000000000)= 333333333333333312

int (1000000000000000000/3)=333333333333333312 

但它應該是:我

int (1000000000000000000/3)=333333333333333333 

是新來的蟒蛇。

+1

你的「真實」的答案是一個近似值(即你一輪的結果與一個int投地板)等是Python生成的:它近似於近似值。恐怕這與領土(即有限的計算近似於實數)有關。如果您需要比標準資源更高的準確度,那麼您需要在所使用的任何語言環境中使用專業圖書館。 – adrianmcmenamin

+2

@adrianmcmenamin:你的解釋有些誤導,舍入錯誤不是由int cast創建的,而是由浮點部分創建的。 Python的「int」函數精確地實現了對浮點數「截去趨近於零」的操作,但它並沒有消除已存在於其參數中的舍入誤差。 –

+0

我沒有說舍入錯誤是由演員造成的。我只是指出OP尋求一個近似值,不幸的是得到了一個更糟糕的預期值 - 但每個近似值都帶有錯誤和任意精度的風險,可能需要特殊的庫。 – adrianmcmenamin

回答

2

您需要辦理落地師//得到那個結果python3如下:

In [1]: 1000000000000000000//3 
Out[1]: 333333333333333333 
+0

當然,在這種情況下,甚至不需要使用int來顯式轉換爲整數,因爲floor division的結果已經是整數。 –

+1

@Rörd對不起,我忘了刪除它,而通過python2檢查它。感謝您指出 – Gahan

+0

是否有任何解釋: int(1000000000000000000/3)= 333333333333333312 爲什麼它給出了這個結果? –