aaa=100*360 竟然溢出
编号:QA004431
建立日期: 2001年9月26日 最后修改日期:2001年10月4日
所属类别:
彭元:
最近搞开发遇到一个简单又奇怪的问题。 win98 vb6.0 的环境下
Dim aaa As Double
aaa=100*65535
msgbox aaa
aaa=100*360
msgbox aaa
aaa=100*360 竟然溢出,实时错误6 。
把100 和 360 给变量相乘就没有问题。请给看看帮着研究研究。
回答:
非常有趣,可能是VB的BUG,如果改为
aaa=100# * 360
就不出错。
sapphire的意见:
VB不能自动转换计算的结果,如果有溢出或者是类型的转换就报错,这个在MSDN中有说明,所以就必须将计算的时候自己设置转换。这个现象MSDN上有详细的解释,因为参加运算的数字都是小于32768的,所以系统认为结果也是整形,所以只要将运算的一个数字改为LONG的结果就是LONG型,所以在后面加上&最为妥当,或者是CLng(100)*360。
此问题由李海回答。
| |
|
|
| |
|
|