Excel中一些舍入函数的对比

1.round(number, num_digits)函数、roundup(number, num_digits)函数、rounddown(number, num_digits)函数

三个函数结构相同,第一参数为源数据,第二参数为小数位数。round按指定位数四舍五入、roundup按指定位数向上取、rounddown按指定位数向下取。

数据源为负数时,按绝对值考虑舍入方向;小数位数可以为负数,负数时取相应位数的整数倍。

 

2.ceiling(number, significance)函数、floor(number, significance)函数

两个函数结构相同,第一参数为源数据,第二参数为倍数。ceiling对数据按倍数向上取整,floor对数据按倍数向下取整。

倍数可以为小数。倍数为正时,按实际数值向上向下摄入;倍数为负,源数据为负时,按绝对值考虑舍入方向;倍数为负,源数据为正时,返回错误。

此函数在计算涨跌停板价、临界价时较为有用。

 

3.mround(number, multiple)函数

第一参数为源数据,第二参数为倍数。mround按指定倍数舍入。

倍数可以为小数。源数据和倍数必须保证符号相同,按绝对值考虑舍入方向。

需要注意的是,根据微软官方文档对mround函数的说明,当倍数参数为十进制数时,恰好位于中点的数舍入方向不确定,这可能导致计算结果不符合预期,需要注意。

PS:上述错误个人猜测为浮点数在二进制中存储或舍入导致,未详细研究,待验证。

 

4.补充

工作表函数中的round函数与VBA函数中的round函数,因为采用了不同的舍入方法(工作表函数采用的是AwayFromZero方法,VBA函数采用的是ToEven方法),在中间值时可能造成结果不同,如工作表中round(2.5,0)=3,VBA中round(2.5,0)=2。

posted @ 2022-03-23 23:41  cnblog_mo  阅读(256)  评论(0编辑  收藏  举报