首页 > 代码库 > Math.round四舍五入
Math.round四舍五入
在用Math.Round做数据处理的时候,经常遇到81.25保留一位小数,则为81.2的情况,经过材料查找,Math.Round四舍五入算法采用“银行家舍入(Banker‘s rounding)”,是IEEE规定的舍入标准,所谓银行家舍入法,其实质是一种四舍六入五取偶(又称四舍六入五留双)法。其规则是:当舍去位的数值小于5时,直接舍去该位;当舍去位的数值大于等于6时,在舍去该位的同时向前位进一;当舍去位的数值等于5时,如果前位数值为奇,则在舍去该位的同时向前位进一,如果前位数值为偶,则直接舍去该位。 通过msdn了解到Math.Round重载列表
Math.Round (Decimal):将小数值舍入到最接近的整数。由 .NET Compact Framework 支持。
Math.Round (Double):将双精度浮点值舍入为最接近的整数。由 .NET Compact Framework 支持。
Math.Round (Decimal, Int32):将小数值舍入到指定精度。由 .NET Compact Framework 支持。
Math.Round (Decimal, MidpointRounding):将小数值舍入到最接近的整数。一个参数,指定当一个值正好处于另两个数中间时如何舍入这个值。
Math.Round (Double, Int32):将双精度浮点值舍入到指定精度。由 .NET Compact Framework 支持。
Math.Round (Double, MidpointRounding):将双精度浮点值舍入为最接近的整数。一个参数,指定当一个值正好处于另两个数中间时如何舍入这个值。
Math.Round (Decimal, Int32, MidpointRounding):将小数值舍入到指定精度。一个参数,指定当一个值正好处于另两个数中间时如何舍入这个值。
Math.Round (Double, Int32, MidpointRounding):将双精度浮点值舍入到指定精度。一个参数,指定当一个值正好处于另两个数中间时如何舍入这个值。
MSDN
下面通过一个例子了解具体情况
ToEven:当一个数字是其他两个数字的中间值时,会将其舍入为最接近的偶数。
AwayFromZero:当一个数字是其他两个数字的中间值时,会将其舍入为两个值中绝对值较小的值。
Math.Round (Decimal):将小数值舍入到最接近的整数。由 .NET Compact Framework 支持。
Math.Round (Double):将双精度浮点值舍入为最接近的整数。由 .NET Compact Framework 支持。
Math.Round (Decimal, Int32):将小数值舍入到指定精度。由 .NET Compact Framework 支持。
Math.Round (Decimal, MidpointRounding):将小数值舍入到最接近的整数。一个参数,指定当一个值正好处于另两个数中间时如何舍入这个值。
Math.Round (Double, Int32):将双精度浮点值舍入到指定精度。由 .NET Compact Framework 支持。
Math.Round (Double, MidpointRounding):将双精度浮点值舍入为最接近的整数。一个参数,指定当一个值正好处于另两个数中间时如何舍入这个值。
Math.Round (Decimal, Int32, MidpointRounding):将小数值舍入到指定精度。一个参数,指定当一个值正好处于另两个数中间时如何舍入这个值。
Math.Round (Double, Int32, MidpointRounding):将双精度浮点值舍入到指定精度。一个参数,指定当一个值正好处于另两个数中间时如何舍入这个值。
MSDN
下面通过一个例子了解具体情况
Math.Round(0.145, 2, MidpointRounding.AwayFromZero) Math.Round(0.145, 2, MidpointRounding.ToEven)运行结果:
0.14 0.14很令人诧异的结果,这是因为我们调用的是Math.Round的double重载,需要调用decimal重载
Math.Round((decimal)0.145, 2, MidpointRounding.AwayFromZero) Math.Round((decimal)0.145, 2, MidpointRounding.ToEven)运行结果:
0.15 0.14下面来看下:MidpointRounding
ToEven:当一个数字是其他两个数字的中间值时,会将其舍入为最接近的偶数。
AwayFromZero:当一个数字是其他两个数字的中间值时,会将其舍入为两个值中绝对值较小的值。
在默认情况下都是使用ToEven,在上面的代码中可以发现。
在SQLServer数据库中也存在类似情况,在开发过程中,写了函数处理该情况,可以参考http://blog.csdn.net/mh942408056/article/details/8234320
Math.round四舍五入
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。