找回密码
 加入
搜索
查看: 30450|回复: 94

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

 火... [复制链接]
发表于 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
 楼主| 发表于 2015-3-13 15:36:31 | 显示全部楼层
俺继续在二楼摆货:

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

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

Why autoit's round function doesn't work this way?  
请教可有别的函数实现"四舍五入"?
发表于 2015-3-13 17:27:07 | 显示全部楼层
俺继续在二楼摆货:

以前没有注意到这个问题竟然还是个问题.
刚才回到Excel里面, 测试了一下它的round函 ...
duanqs 发表于 2015-3-13 15:36



    没必要纠结这个问题,反而我觉得更精确。
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
发表于 2015-3-13 19:18:32 | 显示全部楼层
确实是这样。也求解
发表于 2015-3-13 20:17:26 | 显示全部楼层
平时没注意验证,看来还真有这问题,看来au3对于数值计算之类的还真难以理解,特别是小数……
只能自己写个试试了
发表于 2015-3-13 20:49:13 | 显示全部楼层
有人 可以 往上反映的嗎?? 這樣 我都擔心 計算出來的資料 會不會哪天有錯誤呢
 楼主| 发表于 2015-3-13 21:48:00 | 显示全部楼层
回复 3# Huiseyu

不是俺纠结, 确实要把它计算准确的。 因为是用来核对账单的。
你如果查看以下自己的股票交易帐户的对账单的话, 就会看到券商佣金,过户费和印花税。
这些科目都是精确到分的, 而且是四舍五入的。
 楼主| 发表于 2015-3-13 21:53:57 | 显示全部楼层
回复 5# afan


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

我想用StringFormat()函数试一试,不过现在俺上网的机器里没有au3环境。
无法立即试一试。
发表于 2015-3-13 21:56:25 | 显示全部楼层
回复 8# duanqs


    StringFormat 应该没用,或者说用处不大
 楼主| 发表于 2015-3-13 22:10:14 | 显示全部楼层
回复 9# afan

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

$result = round($pre_result +0.001,2)
发表于 2015-3-13 22:13:07 | 显示全部楼层
回复  afan

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

$result = round($pre_result +0.001,2)
duanqs 发表于 2015-3-13 22:10



    呵呵  这是厕所里打灯笼哦
 楼主| 发表于 2015-3-13 22:15:27 | 显示全部楼层
回复 6# kk_lee69

没有这个必要吧。 因为它牵涉到的是准则问题,而不是对错问题。到底哪一种方式更精确,还真的不容易回答。
发表于 2015-3-13 22:17:44 | 显示全部楼层
回复 10# duanqs

有個變通方法 應該可以

就是 把它丟給資料庫 利用SQL語法中的 ROUND 計算完畢後 取回結果 或者 全部丟給SQL 計算
发表于 2015-3-14 03:58:17 | 显示全部楼层
本帖最后由 netegg 于 2015-3-14 04:47 编辑

[au3]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)[/au3]
和前面说的可能没太多关系,不过不清楚为什么
[au3]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)[/au3]
测试2.155/8.155也一样

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2015-3-14 10:24:11 | 显示全部楼层
扩大100倍计算完再缩小100倍试试看有没有效果


胡言乱语中...
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 12:51 , Processed in 0.085236 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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