C#中的十进制Math.Round

aja*_*hiz 3 .net c# math

可能重复:
为什么.NET使用银行家的舍入作为默认值?

这是一个示例代码

decimal num1=390, num2=60, result;
result=num1/num2; // here I get 6.5
result=Math.Round(result,0);
Run Code Online (Sandbox Code Playgroud)

结果的最终值应为7但是,我得到6.为什么这样的行为呢?

And*_*ich 6

检查第三个参数MidpointRounding.

默认情况下使用MidpointRounding.ToEven,所以

Math.Round(result,0); // 6.0 
//or
Math.Round(result,0, MidpointRounding.ToEven); // 6.0 

//But:
Math.Round(result,0, MidpointRounding.AwayFromZero); // 7.0 
Run Code Online (Sandbox Code Playgroud)