我有一個子例程,因爲我無法理解的原因立即出錯。神祕溢出(錯誤6)
例程中的第一行嘗試將值加載到變量中,並且出錯。
UPCTGT = CLng(Sheets("Settings").Range("C3").Value)
單元格C3中的值是3800040260 ..爲什麼會導致溢出錯誤?
我有一個子例程,因爲我無法理解的原因立即出錯。神祕溢出(錯誤6)
例程中的第一行嘗試將值加載到變量中,並且出錯。
UPCTGT = CLng(Sheets("Settings").Range("C3").Value)
單元格C3中的值是3800040260 ..爲什麼會導致溢出錯誤?
A Long
是一個32位有符號數據類型。可以用32位產生(帶符號的)最大數目爲2,147,486,647
TL; DR
32位是指32位的存儲器
原因2,147,486,647
是可用的最大數字是因爲:
'// Dec to Binary
2,147,486,647 = 11111111111111111111111111111111
2,147,486,648 = 100000000000000000000000000000000
^
'// That's a 33rd bit
第33位溢出可用於該數據類型的內存量 - 因此溢出錯誤。
然而,一個Double
,是一個64位有符號整數,並有足夠的空間供你:)
需要鑄成雙。雖然我不確定龍爲什麼不夠用。我認爲數據類型有更多的潛力
一個符號長整型或** **長有2,147,483,647範圍-2,147,483,648([數據鍵入範圍](https://msdn.microsoft.com/en-us/library/s3f49ktz.aspx?f=255&MSPPError=-2147217396))。你正在嘗試填入3,800,040,260。 – Jeeped