C# 中的四舍五入算法及 MSDN 2005 中文版 Math.Round 勘误 .

news/2025/2/12 17:53:03

C# 中没有四舍五入函数,事实上我知道的程序语言都没有四舍五入函数,因为四舍五入算法不科学,国际通行的是 Banker 舍入法。

Banker's rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一算法的。Banker 舍入法在大量样本统计计算中精度明显比四舍五入高,因为四舍五入总是逢五进位,除非样本中保留精度位不出现5,否则结果必然偏大。

Math.Round 方法默认的也是 Banker 舍入法。

在 .NET 2.0 中 Math.Round 方法有几个重载方法:

Math.Round(Decimal, MidpointRounding)
Math.Round(Double, MidpointRounding)
Math.Round(Decimal, Int32, MidpointRounding)
Math.Round(Double, Int32, MidpointRounding)

将小数值舍入到指定精度。MidpointRounding 参数,指定当一个值正好处于另两个数中间时如何舍入这个值。

该参数是个 MidpointRounding 枚举。

此枚举有两个成员,MSDN 中的说明是:

AwayFromZero 当一个数字是其他两个数字的中间值时,会将其舍入为两个值中绝对值较小的值。
ToEven 当一个数字是其他两个数字的中间值时,会将其舍入为最接近的偶数。

注 意!这里关于 MidpointRounding.AwayFromZero 的说明是错误的!实际舍入为两个值中绝对值较大的值。不过 MSDN 中的例子是正确的,英文描述原文是 it is rounded toward the nearest number that is away from zero.

所以,要实现四舍五入函数,对于正数,可以加一个 MidpointRounding.AwayFromZero 参数指定当一个数字是其他两个数字的中间值时其舍入为两个值中绝对值较大的值,例:

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

 

 

http://blog.csdn.net/vrhero/article/details/1714889


https://dhexx.cn/news/show-1703094.html

相关文章

大厂难进,Java面试该如何一面即中?

Java作为编程语言中的NO.1,选择入行做IT做编程开发的人,基本都把它作为首选语言,进大厂拿高薪也是小伙伴们的梦想。 但很多小伙伴没有正确的学习方法与完整的知识体系图谱,很容易忽视一些Java基础知识,如Java注解、IO…

非码农也能看懂的“机器学习”原理

我们先来说个老生常谈的情景:某天你去买芒果,小贩摊了满满一车芒果,你一个个选好,拿给小贩称重,然后论斤付钱。 自然,你的目标是那些最甜最成熟的芒果,那怎么选呢?你想起来&#xff…

响应变化

响应变化,哪些能响应,哪些不能响应。 变化大,变化小时如何处理 响应变化的度,范围控制,是否超过了当前软件的功能。设计的度,范围控制。业务人员开发团队人员优先级 需求管理范围管理版本管理软件架构、代码…

python为什么在大学计算机等级考试会考呢?为什么会火爆全网呢?

python为什么在大学计算机等级考试会考呢?为什么这么火爆呢? 原因就是python应用广泛,办公自动化,数据分析爬虫等与我们的生活联系密切。 下面看一个利用Python分析学生成绩 注意:本实验是基于Anconda3.X所进行的 一…

SpringMVC 中 返回JSON 数据

前台发一个post请求 后台用controller接住,一定要用 ResponseBody的注解才行。 jackson需要jar包.rar 下载jar包之后,导入其中的三个即可 这样后台直接返回集合就行。前台收到的就是一个JSON数组了。 是不是简单到没朋友。

不要再被Python洗脑了?

最近我们一直被人工智能、Python等各种文章洗脑,文章都在写这些编程语言发展前景比较大,薪资待遇比较高,人才比较稀缺,所以很多人都在争相学习Python、人工智能。 其实就是因为它简单,实用性大而已,其他都…

ARMGNU伪指令

符号定义伪指令 .global,.local,.set,.equ .global 使得符号对连接器可见,变为对整个工程可用的全局变量 .global symbol .local 表示符号对外部不可见,只对本文件可见 .local symbol .set 给一个全局变量或局部变量赋值,和.equ的功能一样 .s…

高效项目管理的十大要诀

当前社会越来越倾向于以项目为中心,通过良好的项目管理来提高工作效率是非常有效的。但是对大多数公司来说,转向以项目为导向的管理结构将会带来极大的变化,尽管变化本身会带来利益,但是人们却往往抵制变化。一定的规则和指导方针…

一文带你看懂Python数据分析利器——Pandas的前世今生

本文将从Python生态、Pandas历史背景、Pandas核心语法、Pandas学习资源四个方面去聊一聊Pandas,期望能带给大家一点启发 Python生态里的Pandas 五月份TIOBE编程语言排行榜,Python追上Java又回到第二的位置。Python如此受欢迎一方面得益于它崇尚简洁的编程…

【Unity/Kinect】Kinect实现UI控件的点击

用体感来实现UI控件的点击,如点击按钮。 做法:用一个图片表示左手手掌,图片位置追踪左手手掌移动,当手掌位于UI控件的矩形内时,握拳表示点击该控件。 using UnityEngine; using System.Collections; using UnityEngine…