繁体   English   中英

在C#中取整。 净

[英]Rounding in C#. Net

我有一个MVC3 C#.Net Web应用程序。 计算结果为158 * 1.75 = 276.5。 我希望这个数字四舍五入到277。我正在使用Math.Round,但是四舍五入。 我知道我已经在某个地方看到过这个问题。 有什么解决方案?

使用需要MidpointRounding重载

Math.Round(276.5, MidpointRounding.AwayFromZero);

演示: http : //ideone.com/sQ26z

如前所述,您可以使用Math.Round(d, MidpointRounding.AwayFromZero)

默认情况下,.NET使用所谓的银行取整 (或MidpointRounding.ToEven

.NET默认使用银行家的四舍五入; 它将以5结尾的值四舍五入到最接近的偶数位数,但并不总是向上取整(称为“语义算术舍入”)。 原因是,如果将一堆随机的十进制数字四舍五入然后求和,那么在使用banker的四舍五入时,该总和将比算术四舍五入的总和更接近未四舍五入的数字总和。

要强制其使用小学四舍五入规则,请使用接受MidpointROunding枚举值的重载:

Math.Round(myNumber, MidpointRounding.AwayFromZero);

采用:

Math.Round(value, MidpointRounding.AwayFromZero);

尝试改用Math.Ceiling

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM