是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 的类型声明字符是数字符号 (#)。