为什么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"
谢谢!
...全文
150 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 的倍数时,误差消失了。
「已注销」 2008-02-28
  • 打赏
  • 举报
回复
1楼正解
东方之珠 2008-02-27
  • 打赏
  • 举报
回复
科学计数法没有绝对等于0的数,近似于0就可以了。比如:abs(Text1.text)<1e-5,就认为是0。

7,785

社区成员

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

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