是VB的bug,还是C#的bug??

liaoning9 2007-04-16 10:56:14
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 第一次可以编译呢?
...全文
306 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
guyehanxinlei 2007-04-18
  • 打赏
  • 举报
回复
Double(双精度浮点型)变量存储为 IEEE 64 位(8 个字节)浮点数值的形式,它的范围在负数的时候是从 -1.79769313486232E308 到 -4.94065645841247E-324,而正数的时候是从 4.94065645841247E-324 到 1.79769313486232E308。Double 的类型声明字符是数字符号 (#)。
liaoning9 2007-04-18
  • 打赏
  • 举报
回复
第一次确实是可以编译的,而且1.79769313486232E+308这个数必须是从c#的调试程序里复制过来的,在别的地方复制就不能编译。真是怪了。
diclover 2007-04-17
  • 打赏
  • 举报
回复
第一次可以编译?
好像不可能吧?
zyg0 2007-04-17
  • 打赏
  • 举报
回复
Private Sub Form_Load()
Dim maxcoordx As Double
maxcoordx = cdbl(1.79769313486231E+308 )
MsgBox maxcoordx
End Sub
sss2002 2007-04-17
  • 打赏
  • 举报
回复
VB 的变量是有符号的,正数实际只有 Double 的一半,所以如果 C 里面用无符号的双精度,VB 会溢出
zdingyun 2007-04-16
  • 打赏
  • 举报
回复
看来是VB描述的BU:VB给出的是极限值的点值,实际数应小于此值。
Private Sub Form_Load()
Dim maxcoordx As Double
maxcoordx = 1.79769313486231E+308
MsgBox maxcoordx
End Sub

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧