例如我有整数363。
任何使其成为360或365的方法?
答案 0 :(得分:8)
这是一个黑客攻击,但它有效:
var rounded = Math.Round(363 / 5f) * 5;
答案 1 :(得分:5)
没有任何内置功能,您只需要自己编写逻辑代码。这是一种这样的方法。 (下去更清楚,但上升是可以控制的。)
int number = 363;
int roundedDown = number - number % 5;
int roundedUp = number + (number % 5 > 0 ? (5 - number % 5) : 0);
对于负数,编辑,逻辑几乎被颠倒了。
static int RoundUpToFive(int number)
{
if (number >= 0)
return number + (number % 5 > 0 ? (5 - number % 5) : 0);
else
return number - (number % 5);
}
static int RoundDownToFive(int number)
{
if (number >= 0)
return number - number % 5;
else
return number + (number % 5 < 0 ? (-5 - number % 5) : 0);
}
答案 2 :(得分:0)
这就是我通常做的事情,这是两个想法的结合:
static int RoundDown(int x, int n) {
return x / n * n;
}
static int Round(int x, int n) {
return (x + n / 2) / n * n;
}
static int RoundUp(int x, int n) {
return (x + n - 1) / n * n;
}
(假设为正数;将其扩展为负数是直截了当的。)
[编辑]
根据LLVM,Round函数也可以这样写:
int Round(int x, int n) {
int z = (x + n / 2);
return z - (z % n);
}
你可能会发现更优雅。