2012-11-28 69 views
1

我收到一個異常說「算術運算導致溢出」,但我不知道爲什麼。算術運算導致溢出 - int64範圍內的結果

我試圖做下列計算

myvalue的= 2 * 11 * 37 * 41 * 41 * 41 * 41

其等於2300169454。我已經聲明瞭myvalue變量爲Long,並且也嘗試了Int64,所以這應該在範圍內。有什麼其他原因導致這個異常?

感謝

回答

4

你已經宣佈分配作爲long目標,但它看起來像你在執行操作中int算術。當所有算術完成爲int時,它確實是溢出。如果您需要以64位執行算術運算,則需要操作數爲long值 - 或者至少其中一些值。 (很難說如果沒有看到真實的代碼,到底在哪裏改變東西。)

+0

謝謝!這正是問題,操作數被聲明爲int。欣賞快速的答案,另一個.net的教訓! –

1

當你得到那個錯誤時,你使用的所有值都是int值(或更小)。

如果只是用在計算一個long值,結果是long值並沒有溢出:

long myvalue = 2 * 11 * 37 * 41 * 41L * 41 * 41; 
相關問題