2

次の条件で最も近いドルに丸める方法を探しています
:(整数.50以上の場合は次の整数に切り上げます)
(整数.49以下の場合は現在の整数に切り下げます)

私が試してみました:

Math.Round(wholenumber.xx, MidpointRounding.ToEven);

これは、たとえば1.5=2および2.5=2であるため、最も近い偶数に丸められるため、必ずしも希望どおりに丸められるとは限りません。

私も試しました:

Math.Round(wholenumber.xx, MidpointRounding.AwayFromZero);

これは常に高い整数に切り上げられます。

私がやろうとしていることのための組み込み機能はありますか、それとも数をチェックして床または天井に応じて行うために独自のカスタムメソッドを作成する必要がありますか?

4

1 に答える 1

12

decimalまず、このタスクには常に使用する必要があることに注意してください。決して使用しないでdoubleください。を使用してdoubleいる場合は、現在実行していることを停止し、プログラムを修正して、物理問題用に設計されたタイプの使用を停止し、お金の問題を解決するためにお金の問題用に設計されたタイプの使用を開始します。

第二に、あなたが言うときあなたは単に間違っています

これは常に高い整数に切り上げられます。

そうではありません。最も近い整数に丸められ、中点にあるために最も近い整数がない場合は、ゼロから遠い整数が選択されます。

あなたが私を信じていないなら、それを試してみてください:

using System;
class P
{
  static void Main()
  {
    decimal buckFifty = 1.50m;
    decimal buckFortyNine = 1.49m;
    Console.WriteLine(Math.Round(buckFortyNine, MidpointRounding.AwayFromZero));
    Console.WriteLine(Math.Round(buckFifty, MidpointRounding.AwayFromZero));
    Console.WriteLine(Math.Round(-buckFortyNine, MidpointRounding.AwayFromZero));
    Console.WriteLine(Math.Round(-buckFifty, MidpointRounding.AwayFromZero));
  }
}

結果は

1
2
-1
-2
于 2012-04-09T21:46:41.200 に答える