Foxtable(狐表)用户栏目专家坐堂 → round2()问题


  共有6799人关注过本帖树形打印复制链接

主题:round2()问题

帅哥哟,离线,有人找我吗?
maomaoxw
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:95 积分:1315 威望:0 精华:0 注册:2012/9/16 14:32:00
round2()问题  发帖心情 Post By:2013/1/21 23:51:00 [只看该作者]

老师好!,我偶然发现round2()函数结算结果不准确,例子如下:
output.show("四舍五入前:" & 3930*0.0045)
output.show("四舍五入后:" & round2(3930*0.0045,2))
得到的结果是:
四舍五入前:17.685
四舍五入后:17.68
round2()函数并没有严格四舍五入,请老师解答是什么问题?

 回到顶部
帅哥哟,离线,有人找我吗?
gsnake
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:5263 威望:0 精华:0 注册:2012/6/6 14:37:00
  发帖心情 Post By:2013/1/22 0:03:00 [只看该作者]

hehe,我顶

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/22 9:12:00 [只看该作者]

 嗯嗯,测试确实有些错漏。看来需要重写。

 目前你可以先这样解决 output.show("四舍五入后:" & round2(3930*0.0045 + 0.0001, 2))

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/1/22 9:17:00 [只看该作者]

收到


 回到顶部
帅哥哟,离线,有人找我吗?
e-png
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2013/1/22 9:21:00 [只看该作者]

顶顶看

 回到顶部
帅哥哟,离线,有人找我吗?
maomaoxw
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:95 积分:1315 威望:0 精华:0 注册:2012/9/16 14:32:00
  发帖心情 Post By:2015/11/2 16:34:00 [只看该作者]

我的自定义函数管用

'四舍五入公式
Dim a As Decimal=args(0)'数据原始值
Dim b As Decimal=args(1)'保留小数位数
Dim c As Decimal '返回值
If int(a*10^(b+1)) Mod 10<5 Then
    c=(int(a*10^(b+1))-int(a*10^(b+1)) Mod 10)*10^-(b+1)
Else
    c=(int(a*10^(b+1))+10-int(a*10^(b+1)) Mod 10)*10^-(b+1)
End If
Return c


 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1421 积分:11294 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2015/11/2 16:43:00 [只看该作者]

这个问题2016版还存在不?

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/2 16:45:00 [只看该作者]

用format,就是严格的四舍五入。

 

比如 msgbox(format(17.685, "0.00"))


 回到顶部