我正在寻找能圆了许多的方法了到另一个最接近的倍数.这类似于量化.
例如.如果我想将81舍入到最接近的20的倍数,它应该返回100.
我可以在.NET框架中使用内置方法吗?
我要求内置方法的原因是因为它很有可能已经被优化了.
是的,整数运算.
要将m舍入到n的下一个倍数,请使用((m + n-1)/ n)*n
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 */
Lee的答案很好但应该是:
t = m + n - 1; return (t - (t % m));
注意从变化N
到M
.模运算应该使用乘数(m)
而不是数字来完成(n)
.