C#Math.Round(值/ 2)。值是十进制。功能不适用于一个特定的数字4.5

时间:2018-09-12 17:52:06

标签: c# .net

我希望将小数点四舍五入,向下取整0.1到0.4,向上取整0.5到0.9。 尝试了这些,但是由于某些原因,如果值是4.5,则四舍五入为4,而不是5 所有其他值都可以正常工作。 3.5 = 4.0,5.5 = 6.0但4.5 = 4.0期望5.0

Math.Round(value / 2)
Math.Round(Math.Round(value / 2),0, MidpointRounding.AwayFromZero)

1 个答案:

答案 0 :(得分:5)

您的第一行正在使用默认的舍入类型(称为银行家的舍入)。您的第二行几乎可以满足您的要求,但是您不需要包括两次致电Math.Round()的请求。

对于您想要的东西,它可能看起来应该像这样:

Math.Round((value / 2), 0, MidpointRounding.AwayFromZero)
// e.g. 3.5 => 4, 4.5 => 5, 5.5 => 6, etc.

详细了解银行家四舍五入here,并详细了解Math.Round() here