C#:Math Round()结果不同

时间:2018-09-23 17:39:22

标签: c# math rounding

我只是在C#中浏览一些编码问题。 fiddle link here

问:以下代码的输出是什么?

using System;

public class Program
{
    public static void Main()
    {
        Console.WriteLine(Math.Round(6.5));
        Console.WriteLine(Math.Round(11.5));
    }
}
  

6   12

这是输出。

我的疑问是6.5是否等于6。11.5为何等于12?

应该为11或6.5应该为7。

也许这是非常不明智的,任何建议/解释都可以帮助我清楚地理解。

1 个答案:

答案 0 :(得分:4)

documentation清楚地定义了这种行为:

  

最接近a的整数。如果a的小数部分是一半   在两个整数之间,其中一个为偶数,另一个为奇数,则   返回偶数。

如果要更改此行为,请使用重载,该重载允许您指定中点舍入行为(请参见docs)。

Math.Round(6.5, MidpointRounding.AwayFromZero) // returns 7.