这是 MSFT 对 MROUND 漏洞的解释:
当为 Multiple 参数提供十进制值时,中点数的舍入方向未定义。例如,MROUND(6.05,0.1) 返回 6.0,而 MROUND(7.05,0.1) 返回 7.1。
MSFT 将此漏洞归咎于 IEEE。
相当于 MROUND(6.05,0.1) 返回 6.1 的解决方法是什么?我应该结合使用 floor() 或 ceiling() 来加或减小数吗?
答案1
我建议MROUND(Number, 0.1)
完全放弃该命令,而使用乘法和上限函数。例如0.1*CEILING.MATH(10*(Number - 0.0499))
。如果一个函数有这么多错误,我就不会想在我的代码中使用它。