zoukankan      html  css  js  c++  java
  • 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
    以下通过一个样例了解详细情况
        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

  • 相关阅读:
    PL/SQL会遇到中文插入乱码问题、数据显示不全
    PL/SQL数据生成器
    编程小案例
    MySql案例收集
    关于PL/SQL的安装配置
    Android 歌词桌面同步显示
    DataGridView控件使用大全
    flex java 交互
    Android Launcher 全面剖析
    Android adb 命令
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4300541.html
Copyright © 2011-2022 走看看