为什么3*4.8-14.4不等于0???

ntha81 2008-02-27 08:06:29
请教各位DX:
为什么3*4.8-14.4<>0

Private Sub Form_Load()
Text1 = 3 * 4.8 - 14.4
End Sub

text1竟然等于"-1.77635683940025E-15"
谢谢!
...全文
97 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
winexe 2008-02-28
用整数计算就没有问题了

具体办法:所有数乘100,然后计算,最后结果除 100


我是菜鸟,欢迎加入QQ群56153339 交流怎么赚美元
只收菜鸟,不收大牛
回复
清晨曦月 2008-02-28
恩 。。可以“通分”解决
回复
of123 2008-02-28
实际上是十进制小数用二进制浮点小数表示的误差问题,与科学计数法无关。科学计数法可以表示 0。

试试 3*4.25-12.75,因为这样的小数可以用二进制精确表示,没有误差。
再试试 4*4.8-19.2,当乘数是 2 的倍数时,误差消失了。
回复
wangwei1979 2008-02-28
1楼正解
回复
东方之珠 2008-02-27
科学计数法没有绝对等于0的数,近似于0就可以了。比如:abs(Text1.text)<1e-5,就认为是0。
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7489

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2008-02-27 08:06
社区公告
暂无公告