2015-11-18 180 views
1

我有一個子例程,因爲我無法理解的原因立即出錯。神祕溢出(錯誤6)

例程中的第一行嘗試將值加載到變量中,並且出錯。

UPCTGT = CLng(Sheets("Settings").Range("C3").Value) 

單元格C3中的值是3800040260 ..爲什麼會導致溢出錯誤?

+3

一個符號長整型或** **長有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

回答

4

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位有符號整數,並有足夠的空間供你:)

0

需要鑄成雙。雖然我不確定龍爲什麼不夠用。我認爲數據類型有更多的潛力