4172.27 - 4104.17相减得到的结果有误是怎么回事?
$f = 4172.27 - 4104.17MsgBox(0, '', '4172.27 - 4104.17 = ' & $f)
运行上面这两句代码,我发现结果不对,后面多了好多个小数。
这是怎么回事啊?换了几个版本 3.3.6.1 3.3.9.4 都是一样的。 浮点数精度问题,很正常的 学习,赚点小费~ 浮点数精度问题,很正常的
kevinch 发表于 2013-4-6 17:16 http://www.autoitx.com/images/common/back.gif
那这个有什么办法解决吗?修改精度,还是只能这样? 我能想到的就是避开浮点数$f = 4172.27 - 4104.17
MsgBox(0, '', '4172.27 - 4104.17 = ' & $f)
$f=417227-410417
MsgBox(0,"",'4172.27 - 4104.17 = ' & $f/100) 我一般会做这样的处理。$f = 4172.27 - 4104.16
MsgBox(0, '', '4172.27 - 4104.17 = ' & StringFormat("%0.2f",$f)) 一般的语言中,浮点数运算都是这样子的,没有办法的 回复 5# kevinch
呵呵,不是每个小数相减都会出现这样的错误啊。但你这个办法也算是折中的办法吧,我先试试,谢谢。 这样$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)) 大数运算就完了,如果对二进制熟悉的话转成二进制计算 回复 10# netegg
麻烦给一段指导的源码 用Round指定位数 exe帮助里我加到math库里了,不再给了
页:
[1]