【数学】四舍五入到总是上整数
本文关键字:整数 数学 四舍五入 | 更新日期: 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)