[英]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.