我需要找到两个整数的除法并将其四舍五入到下一个上整数
例如 x = 7 / y = 5 = 2 ;这里x和y总是大于0
这是我目前的代码
int roundValue = x % y > 0? x / y + 1: x / y;
有没有更好的方法呢?
答案 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会越走越高。