数学.四舍五入:对奇数返回四舍五入,对偶数返回四舍五入
本文关键字:四舍五入 返回 数学 | 更新日期: 2023-09-27 18:18:41
我试图找到一个浮点使用数学轮我发现了以下
0.5 --> 0
1.5 --> 2
2.5 --> 2
3.5 --> 4
等等。我相信这是由于浮点误差,但不太确定如何。怎样才能使偶数四舍五入呢?
From documentation;
最接近a的整数。如果a的小数部分是二分之一在两个整数之间,其中一个是偶数,另一个是奇数,那么返回偶数。注意,这个方法返回Double类型而不是整型
Math.Round
方法有一些重载,它将MidpointRounding
作为一个参数,如果它位于两个数字之间,则可以指定舍入值。
AwayFromZero
当一个数位于另外两个数的中间时,它将被四舍五入距离0最近的数。
ToEven
当一个数位于另外两个数的中间时,它将被四舍五入最接近偶数
您可以使用这个,以克服您所说的:
Math.Round(value, MidpointRounding.AwayFromZero);
使用上面的:
当一个数位于另外两个数的中间时,它将被四舍五入距离0最近的数。
有关MidpointRounding
枚举的更多文档,请查看此处
您可以这样尝试
Math.Round(value, MidpointRounding.AwayFromZero);
从MSDN 如果a的小数部分在两个整数的中间,1其中一个为偶数,另一个为奇数,则返回偶数。
还要提到一个重要的一点,我认为值得一提的是,微软遵循了IEEE 754标准。这在MSDN for Math中也有提到。在注释下面加上:
舍入到最接近的值,与偶数相关联 -舍入到最接近的值;如果数字落在中间,则用an四舍五入到最接近的值偶数(零)最低有效位,出现的概率为50%;这是二进制浮点数的默认值还是推荐的默认值为小数。
舍入到最接近的值,与0保持距离 -舍入到最接近的值;如果数字落在中间,则四舍五入到最接近的值上面(用于正数)或下面(用于负数);这是用作小数浮点数的选项。
这就是所谓的银行家舍入(四舍五入)。你可以在这里读到更多。