当前位置:  开发笔记 > 后端 > 正文

将数字四舍五入到最接近的5或10或X.

如何解决《将数字四舍五入到最接近的5或10或X.》经验,为你挑选了4个好方法。

鉴于像499,73433,2348这样的数字,我可以使用什么VBA来舍入到最接近的5或10?或任意数字?

5点:

 499 ->  500
2348 -> 2350
7343 -> 7345

到10:

 499 ->  500
2348 -> 2350
7343 -> 7340

等等



1> Vilx-..:

这是简单的数学.给定数字X和舍入因子N,公式为:

圆形(X/N)*N.



2> matt wilkie..:

综合答案

X = 1234 'number to round
N = 5    'rounding factor
round(X/N)*N   'result is 1235

对于浮点到整数,1234.564到1235,(这是VB特定的,大多数其他语言只是截断)做:

int(1234.564)   'result is 1235

注意: VB使用Bankers Rounding,到最近的偶数,如果你不知道它可能会令人惊讶:

msgbox round(1.5) 'result to 2
msgbox round(2.5) 'yes, result to 2 too

谢谢大家.



3> Alnitak..:

舍入到最近的X(没有特定于VBA)

N = X*int(N/X + 0.5)

其中int(...)返回下一个最低整数.

如果您的可用舍入函数已经舍入到最接近的整数,则省略添加0.5



4> 小智..:

在VB中,math.round有额外的参数来指定小数位数和舍入方法. Math.Round(10.665,2,MidpointRounding.AwayFromZero)将返回10.67.如果数字是十进制或单个数据类型,math.round将返回十进制数据类型.如果是double,则返回double数据类型.如果选项严格打开,这可能很重要.

(10.665).ToString("n2")的结果从零开始舍入到"10.67".如果没有其他参数,math.round将返回10.66,这可能会导致不必要的差异.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有