• 转:c# 简单又好用的四舍五入方法


    四舍五入是软件开发中经常遇到的问题,我也在不止一个项目中用到这方面的运算;关于c#的四舍五入,如果你去网上搜会有好多结果,但大部分的内容都是说微软的Math.Round() 不准确,属于“四舍六入五成双”,然后会有很多人自己去写方法来实现,有的很简单,有的很复杂,有的还不对;

    其实要实现这个功能,真的不用这么麻烦;大家既然知道c#有Math.Round(),难道就没发现它有多大8个重载方法吗,其中有一个类型是MidpointRounding的参数,只要我们很好的利用它,就完全可以实现很精确的四舍五入,根本不用写那么复杂的方法。


    MidpointRounding:指定数学舍入方法应如何处理两个数字间的中间值。


    下表演示与 MidpointRounding 的值结合使用的某些正数和负数的舍入结果。在舍入数字时所使用的精度是零,这意味着小数点之后的数字会影响舍入运算。例如,对于数字 -2.5,小数点之后的数字是 5。由于该数字是中间值,因此您可以使用 MidpointRounding 值来确定舍入结果。如果指定了 AwayFromZero,则将返回 -3,因为它是精度为零且与零最接近的数字。如果指定了 ToEven,则将返回 -2,因为它是精度为零的最接近的偶数。

    原始数字
    取绝对值较大的值
    取偶数
    3.5
    4
    4
    2.8
    3
    3
    2.5
    3
    2
    2.1
    2
    2
    -2.1
    -2
    -2
    -2.5
    -3
    -2
    -2.8
    -3
    -3
    -3.5
    -4
    -4


    不用我再解释了吧,假如像把3.455四舍五入到3.46,实际上只需要用下面的代码就可以
     

    ==============================

    Math.Round( 3.455, 2, MidpointRounding.AwayFromZero)

    ==============================
     
  • 相关阅读:
    C++中volatile及编译器优化
    virtualbox 复制虚拟机提示uuid is exists
    Opencv实现简易播放器
    机器学习 Hidden Markov Models 2
    MFC显示Mat图片
    HDU 1518 Square
    马的遍历问题
    JAVA反射机制
    UNIX基础知识
    开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]
  • 原文地址:https://www.cnblogs.com/Tmouse/p/1712631.html
Copyright © 2020-2023  润新知