duanqs 发表于 2015-3-13 15:16:39

[以解决+远超预期]"四舍五入"无法搞定?

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

duanqs 发表于 2015-3-13 15:36:31

俺继续在二楼摆货:

以前没有注意到这个问题竟然还是个问题.
刚才回到Excel里面, 测试了一下它的round函数. 结果是四舍五入的.
就是在单元格里输入:
"=round(9.155,2)"

得到: 9.16 的结果, 这点同我们通常理解的结果是一致的.

Why autoit's round function doesn't work this way?
请教可有别的函数实现"四舍五入"?

Huiseyu 发表于 2015-3-13 17:27:07

俺继续在二楼摆货:

以前没有注意到这个问题竟然还是个问题.
刚才回到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

h20040606 发表于 2015-3-13 19:18:32

确实是这样。也求解

afan 发表于 2015-3-13 20:17:26

平时没注意验证,看来还真有这问题,看来au3对于数值计算之类的还真难以理解,特别是小数……
只能自己写个试试了

kk_lee69 发表于 2015-3-13 20:49:13

有人 可以 往上反映的嗎?? 這樣 我都擔心 計算出來的資料 會不會哪天有錯誤呢

duanqs 发表于 2015-3-13 21:48:00

回复 3# Huiseyu

不是俺纠结, 确实要把它计算准确的。 因为是用来核对账单的。
你如果查看以下自己的股票交易帐户的对账单的话, 就会看到券商佣金,过户费和印花税。
这些科目都是精确到分的, 而且是四舍五入的。

duanqs 发表于 2015-3-13 21:53:57

回复 5# afan


    afan超版能在俺的帖子里留下墨迹, 深感荣幸。

我想用StringFormat()函数试一试,不过现在俺上网的机器里没有au3环境。
无法立即试一试。

afan 发表于 2015-3-13 21:56:25

回复 8# duanqs


    StringFormat 应该没用,或者说用处不大

duanqs 发表于 2015-3-13 22:10:14

回复 9# afan

实在不行的话, 用这个变通以下可否?

$result = round($pre_result +0.001,2)

afan 发表于 2015-3-13 22:13:07

回复afan

实在不行的话, 用这个变通以下可否?

$result = round($pre_result +0.001,2)
duanqs 发表于 2015-3-13 22:10 http://www.autoitx.com/images/common/back.gif


    呵呵这是厕所里打灯笼哦

duanqs 发表于 2015-3-13 22:15:27

回复 6# kk_lee69

没有这个必要吧。 因为它牵涉到的是准则问题,而不是对错问题。到底哪一种方式更精确,还真的不容易回答。

kk_lee69 发表于 2015-3-13 22:17:44

回复 10# duanqs

有個變通方法 應該可以

就是 把它丟給資料庫 利用SQL語法中的 ROUND 計算完畢後 取回結果 或者 全部丟給SQL 計算

netegg 发表于 2015-3-14 03:58:17

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

邪恶海盗 发表于 2015-3-14 10:24:11

扩大100倍计算完再缩小100倍试试看有没有效果


胡言乱语中...
页: [1] 2 3 4 5 6 7
查看完整版本: [以解决+远超预期]"四舍五入"无法搞定?