数学舍入到始终为整数

时间:2011-08-01 10:33:44

标签: c#

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

例如 x = 7 / y = 5 = 2 ;这里x和y总是大于0

这是我目前的代码

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

有没有更好的方法呢?

6 个答案:

答案 0 :(得分:41)

可以使用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;
}

答案 1 :(得分:22)

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

答案 2 :(得分:8)

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

( x + y - 1 ) / y

答案 3 :(得分:4)

dunno有什么更好的方式或如何定义更好的方法(如果在性能方面你必须运行测试以查看哪个更快),但这是我的解决方案:

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

P.S。

仍然要以某种方式处理否定。数字... IMO这是最简单的。

答案 4 :(得分:1)

使用ceil()功能。 它给出了较高的值。

答案 5 :(得分:1)

+0.5会越走越高。