【发布时间】:2013-05-23 03:16:27
【问题描述】:
常规的“ROUND”函数在= 0.5时向上舍入
我需要将 0.5 向下舍入,但任何高于该值的都需要向上舍入。
所以:
10.4 应该是 10
10.5 应该是 10
10.6 应该是 11
编辑:这是我想出的解决方案
如果要四舍五入的值在B1中
并且小数精度在 A1 中(0 = 无小数,1 = 一位小数等)=IF(MOD(ABS(B1),(1/(10^A1)))<=0.5*(1/(10^A1)),ROUNDDOWN(B1,A1),ROUNDUP(B1,A1))
ABS() 确保它适用于负数。(1/(10^A1)) 确保我的精度(这是 Google 舍入函数的第二个参数)相应地缩放我的边界条件 (0.5)。
而MOD() 实际上决定了我的边界条件。
编辑2:
感谢@Jayen,提供更优雅的解决方案
=ROUNDUP(B1 - sign(B1) * (10 ^ -A1) / 2, A1)
【问题讨论】:
-
Jayen 的“更优雅”的解决方案有一个错误。用 .2 试试,你会得到 1 而不是 0! -.2 也产生 -1 而不是 0。零会产生 0。但是 0 到 .5 之间的任何数字都会产生 1 而不是 0。人们确实需要更彻底地测试。
标签: excel google-sheets