http://www.soaspx.com/dotnet/csharp/csharp_20100415_3809.html
四舍五入是软件开发中经常遇到的问题,我也在不止一个项目中用到这方面的运算;关于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# 简单又好用的四舍五入方法的更多相关文章

  1. php使用curl简单抓取远程url的方法

    这篇文章主要介绍了php使用curl简单抓取远程url的方法,涉及php操作curl的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php使用curl抓取远程url的方法.分 ...

  2. 简单CSS定位瀑布流实现方法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Git简单生成生成公钥和私钥方法

    Git简单生成生成公钥和私钥方法 Git配置 Git安装完之后,需做最后一步配置.打开git bash,分别执行以下两句命令 git config --global user.name “用户名” g ...

  4. 【转】java取整和java四舍五入方法

    java取整和java四舍五入方法 import java.math.BigDecimal; import java.text.DecimalFormat; public class TestGetI ...

  5. SOCKET简单爬虫实现代码和使用方法

    抓取一个网页内容非常容易,常见的方式有curl.file_get_contents.socket以及文件操作函数file.fopen等. 下面使用SOCKET下的fsockopen()函数访问Web服 ...

  6. Python简单计算数组元素平均值的方法示例

    Python简单计算数组元素平均值的方法示例 本文实例讲述了Python简单计算数组元素平均值的方法.分享给大家供大家参考,具体如下: Python 环境:Python 2.7.12 x64 IDE ...

  7. 数据结构和算法(Golang实现)(4)简单入门Golang-结构体和方法

    结构体和方法 一.值,指针和引用 我们现在有一段程序: package main import "fmt" func main() { // a,b 是一个值 a := 5 b : ...

  8. java取整和java四舍五入方法 转自董俊杰

    import java.math.BigDecimal; import java.text.DecimalFormat; public class TestGetInt{ public static ...

  9. [置顶] 简单解析linux下进程通信方法

    linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的.而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间 ...

随机推荐

  1. 内核抢占实现(preempt) 【转】

    转自:http://blog.chinaunix.net/uid-12461657-id-3353217.html 一.什么叫抢占所谓抢占,说白了就是进程切换.linux的用户空间,进程A在执行中,来 ...

  2. Vim中的键映射【转】

    转自:http://www.cnblogs.com/softwaretesting/archive/2011/09/28/2194515.html http://www.pythonclub.org/ ...

  3. Python 如何将字符串转为字典

    在工作中遇到一个小问题,需要将一个 python 的字符串转为字典,比如字符串: user_info = '{"name" : "john", "ge ...

  4. 【Educationcal Codeforces Round 21】

    这场edu我原本以为能清真一点…… 后来发现不仅是七题 还有各种奇奇怪怪的骚操作…… A. 随便枚举 #include<bits/stdc++.h> using namespace std ...

  5. 如何在datepicker滚动完毕后触发事件去获得日期

    本来以为这件事情应该需要借助datepicker的委托来处理的,但是并没有找到此空间的委托. 其实最最简单的做法就是在IB中将次控件connect到一个Action上. 经过测试,当datepicke ...

  6. python安装基础

    . python安装 //先查看是否存在python的包,如果没有,那可以用yum或去python的官网安装 [root@localhost ~]# rpm -qa|grep python pytho ...

  7. python插入oracle数据

    # coding=utf- ''''' Created on -- @author: ''' import json; import urllib2 import sys import cx_Orac ...

  8. 光流optical flow基本原理与实现

    光流(optical flow)是什么呢?名字很专业,感觉很陌生,但本质上,我们是最熟悉不过的了.因为这种视觉现象我们每天都在经历.从本质上说,光流就是你在这个运动着的世界里感觉到的明显的视觉运动(呵 ...

  9. hdu 1252(BFS)

    Hike on a Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  10. JAVA二叉树的创建以及各种功能的实现

    直接上代码了,代码说得很清楚了 package BTree; public class BTree { private Node root; private class Node { private ...