首页 > 编程语言 >C#中的Math.Round()

C#中的Math.Round()

时间:2023-12-06 16:57:44浏览次数:25  
标签:六入 四舍五入 C# 五成 Math Round 四舍

C#中的Math.Round提供了非常多的重载方法,其中有两个重载方法是

public static double Round (double value, int digits, MidpointRounding mode);
public static decimal Round (decimal d, int decimals, MidpointRounding mode);

这两个方法都提供了第三个参数modemode是一个MidpointRounding的枚举变量,它有2个可选值:

  • AwayFromZero - 四舍五入
  • ToEven - 四舍六入五成双

所以如果我们希望的到一个理想中四舍五入的结果,我们可以改用如下代码:

var num = Math.Round(12.125, 2, MidpointRounding.AwayFromZero);
四舍六入五成双

所谓的四舍六入五成双,就是说当确定有效位数之后,有效位数的下一位如果小于等于4就舍去,如果大于等于6就进一,当有效位数的下一位是5的时候

  • 如果5前为奇数,就舍五进一
  • 如果5前为偶数,就舍五不进(0是偶数)

从统计学上将,四舍六入五成双比四舍五入要更精确,因为大量计算的情况下,四舍五入逢五进一,会导致结果偏向大数。

例如:

1.15+1.25+1.35+1.45 = 5.2

如果有效位数是小数点后一位,使用四舍五入原则得到的结果

1.2 + 1.3 + 1.4 + 1.5 = 5.4

而使用四舍六入五成双原则得到的结果是

1.2 + 1.2 + 1.4 + 1.4 = 5.2

由此可见四舍六入五成双原则得到的结果更为精确。

标签:六入,四舍五入,C#,五成,Math,Round,四舍
From: https://www.cnblogs.com/lgx5/p/17879904.html

相关文章

  • CVE初探之漏洞反弹Shell(CVE-2019-6250)
    概述ZMQ(ZeroMessageQueue)是一种基于消息队列得多线程网络库,C++编写,可以使得Socket编程更加简单高效。该编号为CVE-2019-6250的远程执行漏洞,主要出现在ZMQ的核心引擎libzmq(4.2.x以及4.3.1之后的4.3.x)定义的ZMTPv2.0协议中。这一漏洞已经有很多师傅都已经分析并复现过了,但在......
  • centos命令certbot申请免费ssl证书
    准备epel源yum-yinstallepel直接yum安装yum-yinstallcertbot申请证书,期间需要去dns解析页面配置TXT解析certbotcertonly--email532733691@qq.com--serverhttps://acme-v02.api.letsencrypt.org/directory--agree-tos--manual--preferred-challenges=dns-d*......
  • InvalidVersionSpecError: Invalid version spec: =2.7
    解决方式:将~/anaconda3/lib/python3.7/site-packages/conda/models/version.py中 这一行version_relation_re=re.compile(r'(==|!=|<=|>=|<|>)(?![=<>!])(\S+)$')改成version_relation_re=re.compile(r'(==|!=|<=|>=|<|>|=)(?![=&l......
  • crash —— 输出属于同一个进程的所有线程
    在创建进程或者线程的时候,会调用copy_process,可以看到如下逻辑: /*ok,nowweshouldbesetup..*/ p->pid=pid_nr(pid); if(clone_flags&CLONE_THREAD){ p->group_leader=current->group_leader; p->tgid=current->tgid; }else{ p->group_leader=......
  • torch反向传播backward()函数解析
    参考网址:https://blog.csdn.net/weixin_44179269/article/details/124573992?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170167791616800197042802%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170167791616800197042802&a......
  • Error: error:0308010C:digital envelope routines::unsupported 【问题解决】【转载
    原文链接:  https://www.cnblogs.com/jaxu/p/17171211.html今天早上打开电脑,更新了日常工作的github仓库,然后就是习惯性地执行了"npminstall",发现报了下面这个错误:Error:error:0308010C:digitalenveloperoutines::unsupported顺便看了一下错误堆栈,发现是一个Node......
  • 用html和css和js实现一个班级点名
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>班级点名系统</title>......
  • Leetcode刷题day7-字符串.反转ⅠⅡ.反转单词.右旋转
    344.反转字符串344.反转字符串-力扣(LeetCode)编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。示例1:输入:s=["h","e","l","l","o"]输......
  • Java Spring Boot controller的使用之参数解析
    SpringBoot作为Java中广受欢迎的框架,其controller的使用必须掌握了解,本篇的学习将从以下几个方面展开:动态URL组路由参数解析Restfulcontroller本篇假设你已经了解SpringBoot开发的基本流程,以下示例主要从controller角度学习。1.动态URL说到此,做过web开发的......
  • Java Spring Boot logback 日志配置与使用总结
    在项目开发中,日志是必不可少的,没有日志,怎么排查bug,而且日志也有助于我们看到相关的输入输出,总的来说,日志是日常项目开发必须要有的。今天我们学习SpringBoot中集成logback日志,这里主要会涉及到日志的配置和简单实现,更多的细节请移步官方文档,自己品读,此文档有助于初涉Sprin......