找回密码
 注册
Simdroid-非首页
查看: 94|回复: 2

0.005和0.005不等,咋回事?求教

[复制链接]
发表于 2007-3-28 19:54:37 | 显示全部楼层 |阅读模式 来自 新加坡
我在程序中有一语句如下:
   Abs(Round(Verification, 3) - Round(VerifyReadingT, 3)) <= Round(Tolerance, 3)
大多数情况这句运行正常,担当 Abs(Round(Verification, 3) - Round(VerifyReadingT, 3))为0.005, Round(Tolerance, 3)为0.005,这个语句为false,不知为啥?
我改成如下所示,就可以正常运行。
Round(Abs(Round(Verification, 3) - Round(VerifyReadingT, 3)), 3) <= Round(Tolerance, 3)
发表于 2007-3-31 14:57:21 | 显示全部楼层 来自 北京海淀
Simdroid开发平台
0.005在二进制下是无理数,如果你的两个0.005精度不一样,比如一个是real*4,一个是real*8,就有可能不等。0.005跟自身当然是相等的,如果程序里不等,就是计算机表示这个环节的原因。

[ 本帖最后由 fortran2003 于 2007-3-31 15:00 编辑 ]
发表于 2007-3-31 16:08:18 | 显示全部楼层 来自 浙江温州
计算机存储的有效位数的问题,
在存储实数的时候在二进制和十进制的转换过程中会有误差
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-1 17:32 , Processed in 0.027241 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表