37

価格を丸める方法を見つけようとしています-両方の方法です。例えば:

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

とてもきれいに見えるので

どうすればこれを達成できるかについてのアイデアはありますか?

4

6 に答える 6

81

いくつかのメソッドを作成します。

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、最も近い10分の1になり、切り下げにはrを引くだけです。かなり簡単です。

于 2013-03-01T09:35:06.313 に答える
17

モジュラス(%)や浮動小数点を使用する必要はありません...

これは機能します:

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

public static int RoundDown(int value)
{
    return 10*(value/10);
}
于 2013-03-01T10:15:32.607 に答える
11

このコードは、最も近い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
于 2013-03-01T09:44:17.747 に答える
4

数を 10 で割ります。

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

次に、10 を掛けます。

number = number * 10;
于 2013-03-01T09:39:57.060 に答える
4

数値を別の数値の倍数に丸め、ゼロから遠ざける一般的な方法。

整数の場合

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 + step / 2) を int にキャストしようとしましたが、負の浮動小数点数 ((int) -12.0000 = -11など) に対して間違った結果が得られました。とにかく、これらは私がテストしたいくつかのケースです:

  • ステップ 1 に丸められた数値は、それ自体である必要があります
  • -3 をステップ 2 に丸める = -4
  • -2 をステップ 2 に丸める = -2
  • ステップ 2 に丸められた 3 = 4
  • ステップ 2 に丸められた 2 = 2
  • -2.3 をステップ 0.2 に丸め = -2.4
  • -2.4 をステップ 0.2 に丸め = -2.4
  • ステップ 0.2 に丸められた 2.3 = 2.4
  • ステップ 0.2 に丸められた 2.4 = 2.4
于 2014-10-15T09:54:23.777 に答える