我试图找出如何一轮涨价 - 两种方式。 例如:
Round down
43 becomes 40
143 becomes 140
1433 becomes 1430
Round up
43 becomes 50
143 becomes 150
1433 becomes 1440
我在那里我有发言权的一个价格区间的情况:
£143 - £193
其中,我想说明如下:
£140 - £200
因为它看起来会更加清晰
我如何能做到这一点任何想法?
我试图找出如何一轮涨价 - 两种方式。 例如:
Round down
43 becomes 40
143 becomes 140
1433 becomes 1430
Round up
43 becomes 50
143 becomes 150
1433 becomes 1440
我在那里我有发言权的一个价格区间的情况:
£143 - £193
其中,我想说明如下:
£140 - £200
因为它看起来会更加清晰
我如何能做到这一点任何想法?
我只想创造了几个方法。
int RoundUp(int toRound)
{
if (toRound % 10 == 0) return toRound;
return (10 - toRound % 10) + toRound;
}
int RoundDown(int toRound)
{
return toRound - toRound % 10;
}
模给我们的余数,在围捕的情况下, 10 - r
带你到最近的十分之一,向下舍你只减河 漂亮的直线前进。
你并不需要使用模数(%)或浮点...
这工作:
public static int RoundUp(int value)
{
return 10*((value + 9)/10);
}
public static int RoundDown(int value)
{
return 10*(value/10);
}
此代码四舍五入到10的最近倍数:
int RoundNum(int num)
{
int rem = num % 10;
return rem >= 5 ? (num - rem + 10) : (num - rem);
}
很简单用法:
Console.WriteLine(RoundNum(143)); // prints 140
Console.WriteLine(RoundNum(193)); // prints 190
除以10号。
number = number / 10;
Math.Ceiling(number);//round up
Math.Round(number);//round down
然后乘以10。
number = number * 10;
的一般方法,以数字舍入到其它数量的倍数,舍入远离零 。
对于整
int RoundNum(int num, int step)
{
if (num >= 0)
return ((num + (step / 2)) / step) * step;
else
return ((num - (step / 2)) / step) * step;
}
对于浮动
float RoundNum(float num, float step)
{
if (num >= 0)
return floor((num + step / 2) / step) * step;
else
return ceil((num - step / 2) / step) * step;
}
我知道有些部分可能似乎违反直觉的或者不是很优化。 我试图铸造(NUM +步骤/ 2)为int,但是这给了错误的结果为负浮标( (int) -12.0000 = -11
和这样)。 反正这些都是我测试了几个案例:
public static int Round(int n)
{
// Smaller multiple
int a = (n / 10) * 10;
// Larger multiple
int b = a + 10;
// Return of closest of two
return (n - a > b - n) ? b : a;
}