这是我的公式:
int a;
int b;
int c;
double multiplier;
amount = Convert.ToInt32(Math.Round(multiplier * a * (4 * b + c) / 100, 0));
当我得到的值会使其小数为.5或更大时,它会向下舍入。我该怎么做才能使这个等式完成最终结果(我知道如何显示为字符串)?
答案 0 :(得分:3)
Math.Round
的默认舍入behvaior是ToEven
,它将中点上的数字舍入为最接近的偶数整数。它并不总是向下舍入,正如你所声称的那样,它只有一半的时间向下舍入,并且正好在一半的时间内向上舍入。如果您希望中点始终远离零,那么您需要将MidpointRounding.AwayFromZero
指定为Math.Round
。
答案 1 :(得分:3)
(除了Servey指出的问题......)
请注意某些舍入方法的模式。在某些情况下,您需要使用“AwayFromZero”模式,以便小数点.5和更高版本向上舍入,小于.5向下舍入。
See the documentation.“Math.Round(Decimal,MidpointRounding)示例”显示了我的意思。