是否有一个将负数舍入的excel公式?即round(-2.5)= -2

问题描述 投票:5回答:5

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,这很奇怪,通过四舍五入到最接近的一半数字来打破平局。我不是在寻找这种方法:)

excel excel-formula excel-2010
5个回答
6
投票

如果始终是整数,则应该起作用。

=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

0
投票

一种解决方法可能是以下情况:

IF(A1 >= 0; ROUND(A1; 0); -ROUND(-A1; 0))

0
投票

这似乎也起作用。

=IF(ISNUMBER(FIND(".5",A1)),ROUNDDOWN(A1,0),ROUND(A1,0))

0
投票

不是很漂亮,但是可以。您可以根据要使用的数字的精度来更改精度。

IF(A1 >= 0; ROUND(A1; 0); ROUND(ROUND(A1-0.999999; 0)+.999999; 0))

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
© www.soinside.com 2019 - 2024. All rights reserved.