Dim aa As Single
Dim bb As Single
Dim cc As SingleConst s As Single = 0.3aa = 6
bb = 1.8
cc = aa * s
If cc > bb Then
bb = bb + 1
End If代码执行完成后,bb为什么等于2.8,为什么不等于1.8呢
Dim bb As Single
Dim cc As SingleConst s As Single = 0.3aa = 6
bb = 1.8
cc = aa * s
If cc > bb Then
bb = bb + 1
End If代码执行完成后,bb为什么等于2.8,为什么不等于1.8呢
解决方案 »
- vb具体怎么调通vc的dll文件?求具体方法。
- 报错 对象关闭时 不能操作
- 小弟在做海康卡DS-4004HC,遇到个原始数据回调问题,请教各位了~
- 求Listview控件分页显示程序的源代码。
- 如何用*符号输出一个圆呢??
- 有关MSHFlexGrid 的问题
- 怎么把IMAGE里的图片更新到SQL里一个数据库呢,该库有一个PICTURE字段,类型为IMAGE型
- 数据库 dbf 操作请教
- TextBox中输入中文可以触发KeyPress事件,RichTextBox却不能有什么办法?
- langzhi:哪有msvbvm60.dll下载?
- 如何彻底的释放串口
- WindowsMediaPlayer控件连续播放示例
If cc - bb = 0 Then
bb = bb + 1
End If
调试时输入?6*0.3结果为1.8
但输入?6*0.3=1.8结果为false
好象?3*0.6=1.8结果也为false
但?4*0.6=2.4结果却为ture
不知道为什么
不过,cc因为位数有限的话,如果舍去,不是会变成cc<bb???
不知道2进制运算会不会四舍五入???????
bb 1.8也是个二进制无限小数啊,同样要舍去的,在bb = 1.8赋值以后,bb也是一个近似数
0.3! * 6 的二进制值为 111111111001100110011001100111
最小一位不同相差 1/8388608
而 CSng(Val(0.3!*6)为 111111111001100110011001100110你可以用
cc = Val(aa * s)
这样 VB 认为给 cc 赋值的是一个 Double,就会进行类型转换,误差会被消除
cc > bb 就返回 False 了