有不少人误将Math.Round函数当作四舍五入函数在处理, 结果往往不正确, 实际上Math.Round采用的是国际通行的是 Banker 舍入法.

Banker's rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一算法的. 这个算法可以概括为:“四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍 去,五前为奇要进一。”
    请看下面的例子:

Math.Round(3.44, 1); //Returns 3.4.  四舍

Math.Round(3.451, 1); //Returns 3.5  五后非零就进一
   Math.Round(3.45, 1); //Returns 3.4. 五后皆零看奇偶, 五前为偶应舍 去

Math.Round(3.75, 1);  //Returns 3.8  五后皆零看奇偶,五前为奇要进一
   Math.Round(3.46, 1); //Returns 3.5. 六入

如果要实现我们传统的四舍五入的功能,一种比较简单,投机的方法就是在数的后面加上0.0000000001,很小的一个数.因为"五后非零就进一", 所以可以保证5一定进一.

当然也可以自己写函数, 下面给出一段代码:

public static decimal UNIT = 0.0.1m

static public  decimal  Round(decimal d)

{

return Round(d,UNIT)

}

static public decimal Round(decimal d,decimal unit)

{

decimal rm = d % unit;

decimal result = d-rm;

if( rm >= unit /2)

{

result += unit;

}

return result ;

}

最新文章

  1. 常用网络工具 ipconfig arp traceroute
  2. java中采用dom4j解析xml文件
  3. 使用spring boot+mybatis+mysql 构建RESTful Service
  4. iOS小技巧 - 和屏幕等宽的Table分割线
  5. js中&& 和 ||
  6. ZUFE OJ 2301 GW I (3)
  7. Oracle数据库用户权限和管理员权限
  8. iOS多线程开发之GCD(中篇)
  9. Erlang调度器细节探析
  10. 68.jq---tab选项实现网页定点切换
  11. Mac NPM 配置
  12. 描述linux下文件删除的原理
  13. SpringMvc 文件下载 详解
  14. English trip V1 - B 13. Are you a model? 你是模特吗? Teacher:Patrick Key: 单词回顾、词性后缀
  15. maven中 install的install:install的区别
  16. mongodb postgresql mysql jsonb对比
  17. linux 的常用命令---------第四阶段
  18. SpringBoot(三)-- 整合FreeMarker模板
  19. magento导航栏中如何加入home主页
  20. NetCore+Dapper WebApi架构搭建(三):添加实体和仓储

热门文章

  1. css+js实现自动伸缩导航栏
  2. 字符串替换replace方法
  3. logger.info占位符的使用
  4. 七月伊始 LeetCode算法总结
  5. Oracle 11.2.0.4单实例打补丁
  6. Linux下源码编译Mysql5.7
  7. Fork/Join框架与Java8 Stream API 之并行流的速度比较
  8. Apache源码编译安装脚本
  9. Alipay SDK验签PHP低于5.5版本错误
  10. 团队第六次作业:Beta版本冲刺成绩汇总