首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

是VB的bug,还是C#的bug?该怎么解决

2012-01-05 
是VB的bug,还是C#的bug??PrivateSubForm_Load()DimmaxcoordxAsDouble:maxcoordx1.79769313486232E+308Msg

是VB的bug,还是C#的bug??
Private   Sub   Form_Load()
Dim   maxcoordx   As   Double:   maxcoordx   =   1.79769313486232E+308  
MsgBox   maxcoordx
End   Sub
就是这样简单的一个东西竟然出现问题,我在调试c#程序的时候通过Double.MaxValue得到DOUBLE的最大值是1.79769313486232E+308,我复制下来以后直接赋给VB程序的maxcoordx变量,可以编译,没有提示溢出,把VB工程关闭重新打开以后在编译却提示溢出,我知道vb里的double最大值是1.79769313486231570E+308,但是为什么我从C#调试程序里复制过来的1.79769313486232E+308   第一次可以编译呢?

[解决办法]
看来是VB描述的BU:VB给出的是极限值的点值,实际数应小于此值。
Private Sub Form_Load()
Dim maxcoordx As Double
maxcoordx = 1.79769313486231E+308
MsgBox maxcoordx
End Sub
[解决办法]
VB 的变量是有符号的,正数实际只有 Double 的一半,所以如果 C 里面用无符号的双精度,VB 会溢出
[解决办法]
Private Sub Form_Load()
Dim maxcoordx As Double
maxcoordx = cdbl(1.79769313486231E+308 )
MsgBox maxcoordx
End Sub
[解决办法]
第一次可以编译?
好像不可能吧?

[解决办法]
Double(双精度浮点型)变量存储为 IEEE 64 位(8 个字节)浮点数值的形式,它的范围在负数的时候是从 -1.79769313486232E308 到 -4.94065645841247E-324,而正数的时候是从 4.94065645841247E-324 到 1.79769313486232E308。Double 的类型声明字符是数字符号 (#)。

热点排行