[已解决]两个相同的小数相减,竟然不等于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
这是浮点运算的缘故 回复 2# h20040606
浮点运算有办法规避吗?我目前的办法是运算之前每个数都*1000,输出时再除1000。只要不是小数运算,返回值都是正常的。 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
可以定义一个精度。当查的绝对值少于这个值时,就认为是相等的 难不成当字符处理了?? 精确计算结果的小数点位数
御风兮飘然 发表于 2015-7-4 22:41 http://www.autoitx.com/images/common/back.gif
这个方法比较好用,学习了。 这是浮点运算的缘故 本帖最后由 netegg 于 2015-7-10 14:36 编辑
用四楼的吧 使用Round($a,5)
页:
[1]