【数学】四舍五入到总是上整数

本文关键字:整数 数学 四舍五入 | 更新日期: 2023-09-27 18:04:03

我需要找到两个整数的除法并将其四舍五入到上一个整数

e。g x=7/y=5 = 2这里x和y总是大于0

这是我当前的代码

 int roundValue = x % y > 0? x / y + 1: x / y;

有更好的方法吗?

【数学】四舍五入到总是上整数

可以使用Math.Ceiling…但这将需要转换为/从double

另一种选择是使用Math.DivRem同时做这两部分。

public static int DivideRoundingUp(int x, int y)
{
    // TODO: Define behaviour for negative numbers
    int remainder;
    int quotient = Math.DivRem(x, y, out remainder);
    return remainder == 0 ? quotient : quotient + 1;
}

试试(int)Math.Ceiling(((double)x) / y)

所有的解决方案看起来都太难了。对于x/y的上限值,使用

( x + y - 1 ) / y

不知道什么是更好的方法,或者如何定义一个更好的方法(如果在性能方面,您必须运行测试,看看哪个会更快),但这里是我的解决方案:

int roundValue = x / y + Convert.ToInt32(x%y>0);

注。

仍然需要处理负。数字……在我看来,这是最简单的。

+0.5将会四舍五入。

使用ceil()函数。

最好从Math.Round使用MidpointRounding

在你的例子中:

Math.Round(value, MidpointRounding.AwayFromZero);

查看更多:https://learn.microsoft.com/ru-ru/dotnet/api/system.math.round?view=net-6.0#system-math-round(system-double-system-midpointrounding)