找回密码
 加入
搜索
查看: 3416|回复: 12

[AU3基础] 4172.27 - 4104.17相减得到的结果有误是怎么回事?

 火.. [复制链接]
发表于 2013-4-6 16:37:20 | 显示全部楼层 |阅读模式
$f = 4172.27 - 4104.17
MsgBox(0, '', '4172.27 - 4104.17 = ' & $f)

运行上面这两句代码,我发现结果不对,后面多了好多个小数。

这是怎么回事啊?换了几个版本 3.3.6.1   3.3.9.4 都是一样的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2013-4-6 17:16:06 | 显示全部楼层
浮点数精度问题,很正常的
发表于 2013-4-6 17:39:51 | 显示全部楼层
学习,赚点小费~
 楼主| 发表于 2013-4-6 18:10:32 | 显示全部楼层
浮点数精度问题,很正常的
kevinch 发表于 2013-4-6 17:16


那这个有什么办法解决吗?修改精度,还是只能这样?
发表于 2013-4-6 20:42:03 | 显示全部楼层
我能想到的就是避开浮点数
$f = 4172.27 - 4104.17
MsgBox(0, '', '4172.27 - 4104.17 = ' & $f)
$f=417227-410417
MsgBox(0,"",'4172.27 - 4104.17 = ' & $f/100)
发表于 2013-4-6 22:48:43 | 显示全部楼层
我一般会做这样的处理。
$f = 4172.27 - 4104.16
MsgBox(0, '', '4172.27 - 4104.17 = ' & StringFormat("%0.2f",$f))
发表于 2013-4-7 06:09:51 | 显示全部楼层
一般的语言中,浮点数运算都是这样子的,没有办法的
 楼主| 发表于 2013-4-7 23:05:19 | 显示全部楼层
回复 5# kevinch


     呵呵,不是每个小数相减都会出现这样的错误啊。但你这个办法也算是折中的办法吧,我先试试,谢谢。
发表于 2013-4-8 00:25:29 | 显示全部楼层
这样
$f = (417227  - 410417) / 100
MsgBox(0, '', '4172.27 - 4104.17 = ' & $f)
或者
$f = 4172.27 - 4104.16
MsgBox(0, '', '4172.27 - 4104.17 = ' & StringFormat("%0.2f",$f))
发表于 2013-4-8 05:26:23 | 显示全部楼层
大数运算就完了,如果对二进制熟悉的话转成二进制计算
发表于 2013-4-12 20:31:47 | 显示全部楼层
回复 10# netegg


    麻烦给一段指导的源码
发表于 2013-4-12 23:13:56 | 显示全部楼层
用Round指定位数
发表于 2013-4-13 21:41:26 | 显示全部楼层
exe帮助里我加到math库里了,不再给了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-20 06:19 , Processed in 0.075879 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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