yhxhappy 发表于 2015-7-3 16:01:56

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

本帖最后由 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

h20040606 发表于 2015-7-3 21:02:49

这是浮点运算的缘故

yhxhappy 发表于 2015-7-4 15:05:49

回复 2# h20040606


    浮点运算有办法规避吗?我目前的办法是运算之前每个数都*1000,输出时再除1000。只要不是小数运算,返回值都是正常的。

御风兮飘然 发表于 2015-7-4 22:41:41

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&ch=&tn=98050039_dg&bar=&wd=%E6%B5%AE%E7%82%B9%E6%95%B0%E8%AE%A1%E7%AE%97%E7%B2%BE%E5%BA%A6%E9%97%AE%E9%A2%98&rsv_pq=9eaadfac0002e3c4&rsv_t=426aNnhERuyxMstdHSvGQ3b5%2BxHA2Lrd%2FLhpnHBF6N50nMBNPLbqIvivN9fuMdToqVA&rsv_enter=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

h20040606 发表于 2015-7-5 09:53:04

可以定义一个精度。当查的绝对值少于这个值时,就认为是相等的

nqawen 发表于 2015-7-7 08:34:19

难不成当字符处理了??

acbs 发表于 2015-7-9 16:49:56

精确计算结果的小数点位数
御风兮飘然 发表于 2015-7-4 22:41 http://www.autoitx.com/images/common/back.gif


    这个方法比较好用,学习了。

dsqxiaoqiang 发表于 2015-7-10 11:19:48

这是浮点运算的缘故

netegg 发表于 2015-7-10 14:34:32

本帖最后由 netegg 于 2015-7-10 14:36 编辑

用四楼的吧

kemyliu 发表于 2015-7-11 18:18:14

使用Round($a,5)
页: [1]
查看完整版本: [已解决]两个相同的小数相减,竟然不等于0,我哪里写错了吗?