我是98年开始在学校学程序,然后工作中一起用vb做相关的开发。 现在是做工控行业。 现在遇到这种现象: Private Sub Command1_Click() Dim d As Double d = 10 * 3280 <<运行这里程序溢出错误 Text1.Text = d End Sub 像上面这种程序 为什么乘出的结果大于32767会溢出,平时在运行过程中肯定会有一个超过32767的常数。
十年了才发现这点小问题呀?
MSDN中这样说:
试图在计算中使用一个数字,并且该数字被强制为一个整数,但是结果超过了整数的范围,例如:
Dim x As Long
x = 2000 * 365 ' 错误: 溢出
要解决这个问题,请按如下方式键入该数字:
Dim x As Long
x = CLng(2000) * 365
不过我还是觉得
d = 10# * 3280
这样好一点,直接声明为双精度类型再运算,而不是integer再转换再计算。