神秘溢出(错误 6)
Mystery Overflow (Error 6)
我有一个子例程,由于我无法理解的原因而立即出错。
例程中的第一行尝试将值加载到变量中,但出错了。
UPCTGT = CLng(Sheets("Settings").Range("C3").Value)
单元格 C3 中的值为 3800040260 ..为什么会导致溢出错误?
需要转换为双重角色。虽然我不确定为什么 Long 还不够。我认为数据类型有更大的潜力
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 位有符号整数,并且有足够的空间供您使用 :)
我有一个子例程,由于我无法理解的原因而立即出错。
例程中的第一行尝试将值加载到变量中,但出错了。
UPCTGT = CLng(Sheets("Settings").Range("C3").Value)
单元格 C3 中的值为 3800040260 ..为什么会导致溢出错误?
需要转换为双重角色。虽然我不确定为什么 Long 还不够。我认为数据类型有更大的潜力
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 位有符号整数,并且有足够的空间供您使用 :)