MVC3 C#.Net Web アプリがあります。計算結果は 158 * 1.75 = 276.5 です。この数値を 277 に切り上げます。Math.Round を使用していますが、切り捨てられます。私はこの問題をどこかで見たことがあることを知っています。解決策は何ですか?
質問する
193 次
5 に答える
6
かかるオーバーロードを使用するMidpointRounding
Math.Round(276.5, MidpointRounding.AwayFromZero);
于 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 に答える