热情软件屋

 

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。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio