[以解决+远超预期]"四舍五入"无法搞定?
本帖最后由 duanqs 于 2015-3-19 17:23 编辑用round()函数得到的是五舍六入的结果,请教: 如何才能得到四舍五入的结果?
还是代码说话好些?
MsgBox(0,0,Round( 9.154,2));9.15
MsgBox(0,0,Round( 9.155,2));9.15关键是这个, 按照国人的理解应该得到:9.16. 对不对?
MsgBox(0,0,Round( 9.156,2)) ;9.16
俺继续在二楼摆货:
以前没有注意到这个问题竟然还是个问题.
刚才回到Excel里面, 测试了一下它的round函数. 结果是四舍五入的.
就是在单元格里输入:
"=round(9.155,2)"
得到: 9.16 的结果, 这点同我们通常理解的结果是一致的.
Why autoit's round function doesn't work this way?
请教可有别的函数实现"四舍五入"? 俺继续在二楼摆货:
以前没有注意到这个问题竟然还是个问题.
刚才回到Excel里面, 测试了一下它的round函 ...
duanqs 发表于 2015-3-13 15:36 http://www.autoitx.com/images/common/back.gif
没必要纠结这个问题,反而我觉得更精确。MsgBox(0,154,Round( 9.154,2));9.15
MsgBox(0,155,Round( 9.1555,2));9.16关键是这个, 按照国人的理解应该得到:9.16. 对不对?
MsgBox(0,156,Round( 9.156,2)) ;9.16 确实是这样。也求解 平时没注意验证,看来还真有这问题,看来au3对于数值计算之类的还真难以理解,特别是小数……
只能自己写个试试了 有人 可以 往上反映的嗎?? 這樣 我都擔心 計算出來的資料 會不會哪天有錯誤呢 回复 3# Huiseyu
不是俺纠结, 确实要把它计算准确的。 因为是用来核对账单的。
你如果查看以下自己的股票交易帐户的对账单的话, 就会看到券商佣金,过户费和印花税。
这些科目都是精确到分的, 而且是四舍五入的。 回复 5# afan
afan超版能在俺的帖子里留下墨迹, 深感荣幸。
我想用StringFormat()函数试一试,不过现在俺上网的机器里没有au3环境。
无法立即试一试。 回复 8# duanqs
StringFormat 应该没用,或者说用处不大 回复 9# afan
实在不行的话, 用这个变通以下可否?
$result = round($pre_result +0.001,2) 回复afan
实在不行的话, 用这个变通以下可否?
$result = round($pre_result +0.001,2)
duanqs 发表于 2015-3-13 22:10 http://www.autoitx.com/images/common/back.gif
呵呵这是厕所里打灯笼哦 回复 6# kk_lee69
没有这个必要吧。 因为它牵涉到的是准则问题,而不是对错问题。到底哪一种方式更精确,还真的不容易回答。 回复 10# duanqs
有個變通方法 應該可以
就是 把它丟給資料庫 利用SQL語法中的 ROUND 計算完畢後 取回結果 或者 全部丟給SQL 計算 本帖最后由 netegg 于 2015-3-14 04:47 编辑
msgbox(0,0,Int(9.154 * 100 +0.5)/100)
msgbox(0,0,Int(9.155 * 100 +0.5)/100)
msgbox(0,0,Int(9.156 * 100 +0.5)/100)
和前面说的可能没太多关系,不过不清楚为什么
Local $iRound2 = Round(9.155, 2)
Local $iRound1 = Round(3.155, 2)
MsgBox(4096, "", "The following values were rounded: " & @CRLF & _
'3.155==>'&$iRound1 & @CRLF &'9.155==>'&$iRound2)
测试2.155/8.155也一样 扩大100倍计算完再缩小100倍试试看有没有效果
胡言乱语中...