Console.WriteLine(Math.Round(98.5));Console.WriteLine(Math.Round(97.5));
给出98的相同结果为什么?
根据MSDN documents,Math.Round的行为描述为
如果a的小数部分位于两个整数的中间,则一个其中偶数和另一个奇数,则返回偶数
在这种情况下,98.5在98和99之间。在这种情况下,首选事件号。
类似地,97.5在97和98之间。在这种情况下,偶数是98,这就是在两种情况下结果都是98的原因。
如果您要运行以下代码,则可以进一步说明。
Console.WriteLine(Math.Round(99.5));
Console.WriteLine(Math.Round(98.5));
上面的结果将是
100 // 99.5 is mid way between 99 & 100
98 // 98.5 is mid way between 98 & 99
您可以通过指定MidPointRounding使用Math.Round的重载来改变行为
Console.WriteLine(Math.Round(98.5,MidpointRounding.AwayFromZero));
Console.WriteLine(Math.Round(97.5,MidpointRounding.AwayFromZero));
输出
99
98