通过Math.Round()进行四舍五入

4

我有一个类似这样的东西:

double d1 = Math.Round(88.5, 0); // result 88
double d2 = Math.Round(89.5, 0); // result 90

为什么 Math.Round() 方法会把偶数向下舍入,奇数向上舍入?

6
这里使用的是“银行家舍入法”。需要注意的是,这正如文档中所述:“如果数字a的小数部分恰好在两个整数之间(其中一个是偶数,另一个是奇数),则返回偶数。” - Jon Skeet
1
展示这张票:https://dev59.com/A3NA5IYBdhLWcg3wZ89S - Oilid
1个回答

8

您可以在Math.Round中使用MidpointRounding参数。
当您使用Math.Round时,其中一个重载是接受2个参数的重载,第一个参数是您的值,第二个参数是MidpointRounding类型的枚举。

考虑下面的代码:

Math.Round(88.5, MidpointRounding.AwayFromZero) // The result is 89
Math.Round(88.5, MidpointRounding.ToEven) // The result is 88

这里是关于 Math.Round 和 MidpointRounding 的 MSDN 文档:
https://msdn.microsoft.com/en-us/library/ef48waz8(v=vs.110).aspx
这里是 MidpointRounding 的文档:
https://msdn.microsoft.com/en-us/library/system.midpointrounding(v=vs.110).aspx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接