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