定义了三个双精度的变量 a,b,c a=2524.6 b=4.6 c=11613.16
语句if a*b<>c 为真?
应该是相等的啊,是不是double类型数据存在精度上的丢失?
语句if a*b<>c 为真?
应该是相等的啊,是不是double类型数据存在精度上的丢失?
解决方案 »
- vb+matlab混合编程数组参数传递的问题
- 如何找到一篇文章中重复的字符串?
- 数据库操作模块化的问题
- 我想做个计算器 就是不知道该怎么收到第二次数值
- 报表 图片
- 怎么编vb定时程序哦!
- 我在VB的部件里为什么没有Microsoft DAO 3.51 Object Library这一项?
- 如何实现后台点击,如某个程序非当前程序,我如何模拟或者实现这个程序里某个控件的点击效果(不让这个程序成为当前程序)?
- 如何使字符串与相应的窗体联系?
- 请问VB如何在能在grid(dbgrid,datagrid,msflexgrid等)控件的列中绑定其他控件
- 为什么我这句编译时报错,缺少结束语句
- VB SQL 日期字段查询
例如,10001 被表示为 1.0001 * 10^4,0.0010001 被表示为 1.001*10^-3 。可以看出,小数点”浮动“到第一个数字后面。
看到上面的内容:
于是就有了以下猜测:a=2524.6
2.5246*10^3
b=4.6
4.6*10^0
c=11613.16
1.161316*10^4a*b之后的值为 .(2.5246*4.6)10^3+0 =11.61316*10^3
C =1.161316*10^4所以不相等.为了证明:示例1
Private Sub Command1_Click()
Dim A As Double
Dim b As Double
Dim c As Double
A = 2.1
b = 4
c = 8.4
If A * b = c Then 'OK.表示相等
MsgBox ""
End If
End Sub示例2
Private Sub Command1_Click()
Dim A As Double
Dim b As Double
Dim c As Double
A = 2.1
b = 5
c = 10.4
If A * b = c Then 'NO.表示不相等
MsgBox ""
End If
End Sub
'以上只是猜测,望高手指正
通常你这种要精确比较的情况,应该用currency类型
if abs(a*b-c)>0.00000001 then
'不相等的处理
end if
这样就行了,
我也想知道为什么出现这种情况,希望楼下能给出一些猜想:if cstr(a*b) <>cstr(c) then
'一定OK.我试过.
end if
语句if a*b <>c 为假 ?这组数据就好象是假 ??