话说,最近一次系统维护 用JS读取导入Excel中的实验数据,出现被自动四舍五入。后来到客户现场听客户反馈  Excel实验数据要求 奇进偶不进。

关于 奇进偶不进 产生的由来:从统计学的角度,“奇进偶舍”比“四舍五入”要科学,在大量运算时,它使舍入后的结果误差的均值趋于零,而不是像四舍五入那样逢五就入,导致结果偏向大数,使得误差产生积累进而产生系统误差,“奇进偶舍”使测量结果受到舍入误差的影响降到最低。

Math下找了下,使用Round 的重载,使用 MidpointRounding.ToEven 就可以实现 奇进偶不进。

            //
double d = 5.214;
double res = Math.Round(d, , MidpointRounding.ToEven);
Console.WriteLine(res);//5.21 //
d = 5.216;
res = Math.Round(d, , MidpointRounding.ToEven);
Console.WriteLine(res);//5.22 //
d = 5.215;
res = Math.Round(d, , MidpointRounding.ToEven);
Console.WriteLine(res);//5.22
d = 5.225;
res = Math.Round(d, , MidpointRounding.ToEven);
Console.WriteLine(res);//5.22 //不止小数点后3位时
d = 0.7865666;
res = Math.Round(d, , MidpointRounding.ToEven);
Console.WriteLine(res);//0.79 d = 0.786;
res = Math.Round(d, , MidpointRounding.ToEven);
Console.WriteLine(res);//0.79 d = 0.785;
res = Math.Round(d, , MidpointRounding.ToEven);
Console.WriteLine(res);//0.78

关于C# Math 处理奇进偶不进的更多相关文章

  1. 【学习总结】Python-3-round()函数的奇进偶弃的问题

    参考: 本教程的评论区:菜鸟教程-Python3-Python数字 "4舍6入5看齐,奇进偶不进" 取代"四舍五入". round()函数: 可以在第二个参数指 ...

  2. js实现四舍六入 奇进偶舍

    function PointFloat(src, pos) { return Math.round(src * Math.pow(10, pos)) / Math.pow(10, pos); } // ...

  3. 进制与进制转换DAY2

    进制和进制转换 一.进制的基础 1.十进制(案例) 系数:0-9 进位规则:逢十进一 权:基数的次幂 基数:几进制基数就是几 规律:右侧第一位的权是10的0次幂,每向左移动一位次幂会+1. 进制的表示 ...

  4. C#控制打印机通过不同纸盒/进纸口进纸打印

    通常我们是通过程序操作打印机打印我们设置好的内容,但基本都是打印机默认进纸口打印:最近有一个通过C#程序控制两个进纸口分别进一张纸进行打印的需求,通过偿失找到了解决方案如下: 关于C#调用打印机打印的 ...

  5. sql奇进偶舍函数

     create   function   sslr(@num   numeric(20,10),@i   int) --@i保留的小数位 --@num传入的数据 returns   varchar(2 ...

  6. table 奇行偶行

    jquery 方法: $("tr:odd").//偶行 $("tr:even") //奇行

  7. HDU-5215 Cycle 无向图判奇环偶环

    题意:给一个无向图,判断这个图是否存在奇环和偶环. 解法:网上有一种只用dfs就能做的解法,但是我不太理解. 这里用的是比较复杂的.首先奇环很简单可以用二分图染色判断.问题是偶环怎么判断?这里我们想, ...

  8. 概念:P制,N制,奇场,偶场,隔行扫描,逐行扫描

    转帖: 场的概念原于电视,电视由于要克服信号频率带宽的限制,无法在制式规定的刷新时间内(PAL制式是25fps)同时将一帧图象显现在屏幕上,只能将图象分成两个半幅的图像,一先一后地显现,由于刷新速度快 ...

  9. matlab求距一个数最近的奇(偶)数

    int_a = floor(a);minEven = int_a+mod(int_a,2); %最近偶数minOdd = int_a+1-mod(int_a,2); %最近奇数

随机推荐

  1. 如何在安装程序中判断操作系统是否是64位 inno

    [Setup]; 开启64位模式ArchitecturesInstallIn64BitMode=x64 [Run] ;根据是否是64位进行不同的操作Filename: "..."; ...

  2. How to use “svn add” recursively in Linux shell?

    This command will add any un-versioned files listed in svn st command output to subversion. Note tha ...

  3. SQL行转列和列转行

    行列互转,是一个经常遇到的需求.实现的方法,有case when方式和2005之后的内置pivot和unpivot方法来实现. 在读了技术内幕那一节后,虽说这些解决方案早就用过了,却没有系统性的认识和 ...

  4. GO語言視頻教程

    第1课:https://github.com/Unknwon/go-fundamental-programming/blob/master/lectures/lecture1.md Go开发环境搭建h ...

  5. 转:LIRE的使用

    LIRE的使用:创建索引 LIRE(Lucene Image REtrieval)提供一种的简单方式来创建基于图像特性的Lucene索引.利用该索引就能够构建一个基于内容的图像检索(content- ...

  6. 了解Browserify

    Browserify是一个Javascript的库,可以用来把多个Module打包到一个文件中,并且能很好地应对Modules之间的依赖关系.而Module是封装了属性和功能的单元,是一个Javasc ...

  7. Revit如何修改云线批注外观

    Revit云线批注属于注释族类别,有两种方式可以修改云线批注的外观,有两处设置可以修改云线批注的颜色线宽等外观,一个是视图属性"可见性/图形替换"对话框,另一个是菜单"管 ...

  8. Delphi 2 Unleashed (一) 介绍

    原书作者是作者是 Charles Calvert,国内翻译为<Delphi 2 程序设计大全>,由横空翻译组翻译,机械工业出版社1997年12月出版,看网上评论和介绍,该书是系统学习 De ...

  9. 查看mysql版本的四种方法

    1:在终端下:mysql -V. 以下是代码片段: [shengting@login ~]$ mysql -V mysql Ver 14.7 Distrib 4.1.10a, for redhat-l ...

  10. 编译fresco源码

    同步发表于http://avenwu.net/fresco/2015/05/07/build_fresco_sample fresco出来已经有一阵子了,曾经尝试过一次clone源码编译,主要是看其自 ...