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。