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