1

我有一个 MVC3 C#.Net 网络应用程序。计算的乘积是 158 * 1.75 = 276.5。我希望这个数字四舍五入到 277。我正在使用 Math.Round 但它会向下舍入。我知道我以前在某个地方看到过这个问题。解决方案是什么?

4

5 回答 5

6

使用需要 a的重载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 结尾的值四舍五入到最接近的偶数有效数字,而不总是向上(称为“语义算术四舍五入”)。原因是,如果你对一堆随机十进制数进行四舍五入,然后将它们相加,当使用银行家四舍五入时,该总和将更接近未四舍五入的数字的总和,而不是算术四舍五入的数字的总和。

要强制它使用小学舍入规则,请使用接受 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 回答