如何完成它而不是总是向下舍入?

时间:2014-01-07 20:25:31

标签: c# rounding

这是我的公式:

int a;
int b;
int c;

double multiplier;

amount = Convert.ToInt32(Math.Round(multiplier * a * (4 * b + c) / 100, 0));

当我得到的值会使其小数为.5或更大时,它会向下舍入。我该怎么做才能使这个等式完成最终结果(我知道如何显示为字符串)?

2 个答案:

答案 0 :(得分:3)

Math.Round的默认舍入behvaior是ToEven,它将中点上的数字舍入为最接近的偶数整数。它并不总是向下舍入,正如你所声称的那样,它只有一半的时间向下舍入,并且正好在一半的时间内向上舍入。如果您希望中点始终远离零,那么您需要将MidpointRounding.AwayFromZero指定为Math.Round

答案 1 :(得分:3)

(除了Servey指出的问题......)

请注意某些舍入方法的模式。在某些情况下,您需要使用“AwayFromZero”模式,以便小数点.5和更高版本向上舍入,小于.5向下舍入。

See the documentation.“Math.Round(Decimal,MidpointRounding)示例”显示了我的意思。