MidimalRounding的Decimal.Round默认设置

Eri*_*ing 21 .net c# rounding

以下适用:

var rounded = Decimal.Round(7.635m, 2);
//rounded: 7.63
Run Code Online (Sandbox Code Playgroud)

对我来说,这是错误和意想不到的行为.我假设的价值7.64.

要做到这一点,我可以这样做:

var rounded = Decimal.Round(7.635m, 2, MidpointRounding.AwayFromZero);
//rounded: 7.64
Run Code Online (Sandbox Code Playgroud)

这怎么可能不是默认行为Decimal.Round?有什么好理由吗?

Hab*_*bib 17

这怎么可能不是Decimal.Round的默认行为?有什么好理由吗?

如果你看一下Decimal.Round方法(十进制)的文档

方法行为遵循IEEE标准754第4节.这种舍入有时称为一轮半到连银行家的舍入.它最大限度地减少了在单个方向上始终舍入中点值所导致的舍入误差.它相当于使用MidpointRounding.ToEven的模式参数调用Round(Decimal,MidpointRounding)方法.