四舍五入整数的10最近倍数(Rounding integers to nearest multipl

2019-07-20 18:35发布

我试图找出如何一轮涨价 - 两种方式。 例如:

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

因为它看起来会更加清晰

我如何能做到这一点任何想法?

Answer 1:

我只想创造了几个方法。

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带你到最近的十分之一,向下舍你只减河 漂亮的直线前进。



Answer 2:

你并不需要使用模数(%)或浮点...

这工作:

public static int RoundUp(int value)
{
    return 10*((value + 9)/10);
}

public static int RoundDown(int value)
{
    return 10*(value/10);
}


Answer 3:

此代码四舍五入到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


Answer 4:

除以10号。

number = number / 10;
Math.Ceiling(number);//round up
Math.Round(number);//round down

然后乘以10。

number = number * 10;


Answer 5:

的一般方法,以数字舍入到其它数量的倍数,舍入远离零 。

对于整

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和这样)。 反正这些都是我测试了几个案例:

  • 任何数量的舍入到步骤1应该是本身
  • -3四舍五入到步骤2 = -4
  • -2四舍五入到步骤2 = -2
  • 3四舍五入到步骤2 = 4
  • 2四舍五入到步骤2 = 2
  • -2.3四舍五入到步骤0.2 = -2.4
  • -2.4四舍五入到步骤0.2 = -2.4
  • 2.3四舍五入到步骤0.2 = 2.4
  • 2.4四舍五入到步骤0.2 = 2.4


Answer 6:

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;
        }


文章来源: Rounding integers to nearest multiple of 10