说:
Math.Round(2.5) //2.0
Math.Round(-2.5) //-2.0
Math.Round(2.5,MidpointRounding.ToEven) // 2.0
Math.Round(2.5,MidpointRounding.AwayFromZero) //3.0
问题:如果我用-77777777.5更改号码,为什么结果是-77777778.0而不是-77777777.0
Math.Round(-77777777.5) // -77777778.0
Math.Round(-77777777.5,MidpointRounding.AwayFromZero) // -77777778.0
Math.Round(-77777777.5,MidpointRounding.ToEven) // -77777778.0
最佳答案
默认的MidPointRounding
模式是ToEven
。在此模式下,如documentation所述(其中a
是输入值),
最接近a的整数。如果a的小数部分是一半
在两个整数之间,其中一个为偶数,另一个为奇数,则
偶数返回。-77777777.5
具有两个最接近的整数-77777777
和-77777778
,但后者是偶数,因此是返回的整数。
在AwayFromZero
模式下,-77777778
显然比-77777777
更远离零。