分裂四舍五入?

时间:2010-08-17 00:19:52

标签: c# rounding

为什么以下代码:

Console.WriteLine(String.Format("{0:C0}", 2170/ 20));

产生“109美元”,同时做

Console.WriteLine(Math.Round(2170 / 20));

给我108?

我如何得到2170/20给我109?

2 个答案:

答案 0 :(得分:4)

当您除以整数类型的值时,例如217020,运行时执行整数除法并丢弃(截断)小数。

如果您将其中一个操作数更改为floatdoubledecimal(例如2170.0 / 202170 / 20m),它将执行像你期望的那样,一个浮点除法。

因此,您需要将其更改为

Console.WriteLine(Math.Round(2170.0 / 20));

修改

像这样:

Math.Round(2170m / 20, MidpointRounding.AwayFromZero)

答案 1 :(得分:0)

尝试Math.Round(2170.0 / 20.0)