• Math.Round默认采用的不是四舍五入法, 而是四舍六入的银行家算法, 如何找回四舍五入法?


    Math.Round默认采用的不是四舍五入法, 而是四舍六入的银行家算法,  也就是四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍 去,五前为奇要进一, 这个算法比四舍五入更精确些.


                Response.Write("<BR>" + Math.Round(144.34, 1)); --144.3
                Response.Write("<BR>" + Math.Round(144.15, 1)); --144.2
                Response.Write("<BR>" + Math.Round(144.25, 1)); --144.2
                Response.Write("<BR>" + Math.Round(144.35, 1)); --144.4
                Response.Write("<BR>" + Math.Round(144.36, 1)); --144.4

    但这根我们有些场合的预期结果有差异, 不太一致? 如何找回熟悉的四舍五入法? 加上MidpointRounding.AwayFromZero参数即可.

                Response.Write("<BR>" + Math.Round(144.34, 1, MidpointRounding.AwayFromZero));
                Response.Write("<BR>" + Math.Round(144.15, 1, MidpointRounding.AwayFromZero));
                Response.Write("<BR>" + Math.Round(144.25, 1, MidpointRounding.AwayFromZero));
                Response.Write("<BR>" + Math.Round(144.35, 1, MidpointRounding.AwayFromZero));
                Response.Write("<BR>" + Math.Round(144.36, 1, MidpointRounding.AwayFromZero));

    如果加MidpointRounding.ToEven, 则又返回了四舍六入.

    作者:BobLiu
    邮箱:lzd_ren@hotmail.com
    出处:http://www.cnblogs.com/liuzhendong
    本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Sqoop
    Mediawiki
    TextMate 通用快捷键
    Wind7外接显示器选择拓展模式后,鼠标只能往右移动才能切换到外接显示器上,不能修改切换方向
    用Nginx+Lua(OpenResty)开发高性能Web应用
    netty4.0.x源码分析—bootstrap
    mysql分组合并GROUP_CONCAT
    Only POT texture can be compressed to PVRTC format
    手机屏幕左下角显示Fastboot mode是什么情况?
    判断UNITY版本号
  • 原文地址:https://www.cnblogs.com/liuzhendong/p/2097624.html
Copyright © 2020-2023  润新知