Microsoft Office Excel 2010将2.5舍入到3。它还将-2.5舍入到-3。
我正在尝试使用Excel针对将-2.5舍入为-2的系统来验证我的数据。不同的系统似乎使用不同的打破平局规则(即,我了解到Oracle使用相反规则的艰难方式)。
是否有一个Excel公式将-2.5舍入为-2?创造力也是可以接受的(即简单的宏)。
它也应该四舍五入:
-2.7 -> -3
-2.2 -> -2
此方向与我要寻找的方向相反:
=ROUND(-2.5,0)
编辑:我之前说过,一种舍入比另一种更正确。经过更多的研究,我没有一个比另一个更受欢迎。但是我确实找到了默认的IEEE rounding rule,这很奇怪,通过四舍五入到最接近的一半数字来打破平局。我不是在寻找这种方法:)
如果始终是整数,则应该起作用。
=FLOOR(A1+0.5,1)
如果您需要小数,请说小数在B1中,就这么简单
=FLOOR(A1*10^B1+0.5,1)/10^B1
正如Barry Houdini在评论中指出的,FLOOR(,1)与INT()相同,但没有额外的参数。
=INT(A1*10^B1+0.5)/10^B1
一种解决方法可能是以下情况:
IF(A1 >= 0; ROUND(A1; 0); -ROUND(-A1; 0))
这似乎也起作用。
=IF(ISNUMBER(FIND(".5",A1)),ROUNDDOWN(A1,0),ROUND(A1,0))
不是很漂亮,但是可以。您可以根据要使用的数字的精度来更改精度。
IF(A1 >= 0; ROUND(A1; 0); ROUND(ROUND(A1-0.999999; 0)+.999999; 0))
您还可以通过将IF()与INT()一起使用来评估数字是正数还是负数,方法是先转换为正数,然后再转换为正数。
伪代码
// positive number evaluation
If decimal is greater than or equals 0, then INT( decimal )
// negative number evaluation
Else INT( number × (-1) ) × (-1)
Excel If()和INT()函数
=IF( number >= 0, INT( number ), INT( ( number ) * (-1) ) * (-1) )
正数示例
=IF(2.5>=0,INT(2.5),INT((2.5)*(-1))*(-1))
=2
负数示例
=IF(-2.5>=0,INT(-2.5),INT((-2.5)*(-1))*(-1))
=-2