找回密码
 加入
搜索
查看: 4014|回复: 9

[效率算法] [已解决]两个相同的小数相减,竟然不等于0,我哪里写错了吗?

  [复制链接]
发表于 2015-7-3 16:01:56 | 显示全部楼层 |阅读模式
本帖最后由 yhxhappy 于 2015-11-18 20:09 编辑

如代码,刚开始都是对的,但到 0.1-0.1 的时候返回值就很长,好像科学计数法。
一直不明白原因。
$MMax = 0.1
$MMin = 0

Local $Num = ($MMax-$MMin)/10, $oMax = $MMax
For $x = 0 To 10
   $MMax -= $Num
   MsgBox(0,0,$oMax & "-" & $Num & "=" & $MMax)
   $oMax = $MMax
Next
发表于 2015-7-3 21:02:49 | 显示全部楼层
这是浮点运算的缘故
 楼主| 发表于 2015-7-4 15:05:49 | 显示全部楼层
回复 2# h20040606


    浮点运算有办法规避吗?我目前的办法是运算之前每个数都*1000,输出时再除1000。只要不是小数运算,返回值都是正常的。
发表于 2015-7-4 22:41:41 | 显示全部楼层
https://www.baidu.com/s?ie=utf-8 ... =1&inputT=14163
精确计算结果的小数点位数
$MMax = 0.1
$MMin = 0

Local $Num = ($MMax-$MMin)/10, $oMax = $MMax
For $x = 0 To 10
   $MMax = Round($MMax-$Num,3)
   MsgBox(0,0,$oMax & "-" & $Num & "=" & $MMax)
   $oMax = $MMax
Next
发表于 2015-7-5 09:53:04 | 显示全部楼层
可以定义一个精度。当查的绝对值少于这个值时,就认为是相等的
发表于 2015-7-7 08:34:19 | 显示全部楼层
难不成当字符处理了??
发表于 2015-7-9 16:49:56 | 显示全部楼层
精确计算结果的小数点位数
御风兮飘然 发表于 2015-7-4 22:41



    这个方法比较好用,学习了。
发表于 2015-7-10 11:19:48 | 显示全部楼层
这是浮点运算的缘故
发表于 2015-7-10 14:34:32 | 显示全部楼层
本帖最后由 netegg 于 2015-7-10 14:36 编辑

用四楼的吧
发表于 2015-7-11 18:18:14 | 显示全部楼层
使用Round($a,5)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 18:55 , Processed in 0.111284 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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