博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中四舍五入的问题
阅读量:5993 次
发布时间:2019-06-20

本文共 946 字,大约阅读时间需要 3 分钟。

Math.Round()准确的说,这个函数不是四舍五入,而是四舍六入五凑偶,就是说小于4或大于6的该舍该入是没有争议的,而5处在正中间,如果四舍五入则会造成数据的整体偏差,所以采取的原则是:如果舍入位为5,则舍入后最后一位为偶数,这是国际惯例。

C# 中没有四舍五入函数,事实上我知道的程序语言都没有四舍五入函数,因为四舍五入算法不科学,国际通行的是 Banker 舍入法 Banker 's rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一算法的。

下面的这段代码能实现严格的四舍五入:

public static double Round(double num, int prec)        {            bool isNegative = false;            //如果是负数            if (num < 0)            {                isNegative = true;                num = -num;            }            int IValue = 1;            for (int i = 1; i <= prec; i++)            {                IValue = IValue * 10;            }            double Int = Math.Round(num * IValue + 0.5, 0);            num = Int / IValue;            if (isNegative)            {                num = -num;            }            return num;        }
本文转自齐师傅博客园博客,原文链接:http://www.cnblogs.com/youring2/archive/2013/01/30/2882470.html,如需转载请自行联系原作者
你可能感兴趣的文章
PHP开发0-PHP语言简介
查看>>
从学习c++到Java----编程启示录
查看>>
使用EasyRecovery恢复RAW格式的U盘数据
查看>>
资源收藏
查看>>
晨读打卡(2018.2)
查看>>
shell 信号列表
查看>>
深入浅出之正则表达式(一)
查看>>
数据库知识笔记
查看>>
企业级备份方案系列PART1:SCDPM 2012安装和配置
查看>>
小蚂蚁学习Redis笔记(1)——Redis简介、适用场景、对比
查看>>
我的友情链接
查看>>
ESXI支持linux远程命令管理
查看>>
linux内核动态加载模块
查看>>
ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)
查看>>
java垃圾回收算法之-标记清除
查看>>
压缩工具及bash脚本编程
查看>>
学习SpringMVC——你们要的REST风格的CRUD来了
查看>>
在EditPlus中使用代码格式化插件
查看>>
MYSQL主从复制部署流程
查看>>
Java中的增强 for 循环 foreach
查看>>