.NET方法将数字四舍五入到另一个数字的最接近的倍数?

ili*_*rit 12 .net rounding

我正在寻找能圆了许多的方法到另一个最接近的倍数.这类似于量化.

例如.如果我想将81舍入到最接近的20的倍数,它应该返回100.

我可以在.NET框架中使用内置方法吗?

我要求内置方法的原因是因为它很有可能已经被优化了.

Joe*_*Joe 11

是的,整数运算.

要将m舍入到n的下一个倍数,请使用((m + n-1)/ n)*n

  • 你似乎错过了我要求"内置"方法的部分. (3认同)

Lep*_*R64 7

public static int RoundUp(int num, int multiple)
{
  if (multiple == 0)
    return 0;
  int add = multiple / Math.Abs(multiple);
  return ((num + multiple - add) / multiple)*multiple;
}


static void Main()
{
  Console.WriteLine(RoundUp(5, -2));
  Console.WriteLine(RoundUp(5, 2));
}

/* Output
 * 4
 * 6
*/
Run Code Online (Sandbox Code Playgroud)


von*_* v. 5

Lee的答案很好但应该是:

t = m + n - 1; return (t - (t % m));
Run Code Online (Sandbox Code Playgroud)

注意从变化NM.模运算应该使用乘数(m)而不是数字来完成(n).