1

MVC3 C#.Net Web アプリがあります。計算結果は 158 * 1.75 = 276.5 です。この数値を 277 に切り上げます。Math.Round を使用していますが、切り捨てられます。私はこの問題をどこかで見たことがあることを知っています。解決策は何ですか?

4

5 に答える 5

6

かかるオーバーロードを使用するMidpointRounding

Math.Round(276.5, MidpointRounding.AwayFromZero);

デモ: http://ideone.com/sQ26z

于 2012-09-19T21:34:17.660 に答える
4

すでに述べたように、使用できますMath.Round(d, MidpointRounding.AwayFromZero)

デフォルトでは、.NET はいわゆるバンカー丸め(またはMidpointRounding.ToEven)を使用します。

于 2012-09-19T21:37:02.307 に答える
2

.NET は既定で銀行家の丸めを使用します。5 で終わる値を最も近い偶数の有効桁数に丸めます (「セマンティック算術丸め」と呼ばれます)。その理由は、乱数の 10 進数を丸めてから合計すると、バンカーの丸めを使用すると、算術的に丸められた数値の合計よりも、丸められていない数値の合計に近くなるからです。

小学校の丸め規則を強制的に使用するには、 MidpointRounding 列挙値を受け入れるオーバーロードを使用します。

Math.Round(myNumber, MidpointRounding.AwayFromZero);
于 2012-09-19T21:36:58.920 に答える
0

使用する:

Math.Round(value, MidpointRounding.AwayFromZero);
于 2012-09-19T21:35:30.893 に答える
-1

代わりに Math.Ceiling を使用してみてください

于 2012-09-19T21:34:14.407 に答える