Math.Round 四舍五入问题 解惑 !
前言:
一定要说 坑爹的微软! 坑爹的微软! 坑爹的微软! 重要的事情说 三遍 !
摘录 SMDN
下面的示例演示就近舍入。
MSDN 上显示 这就不是 四舍五入 这叫 五舍六入!
重要的提示! 在 .NET 4.5 自后 该方法就成了标准的 四舍五入了!! 2.0 3.0 3.5 4.0 都是 五舍六入!
解决办法 网上大神也给出过
摘录
C#中小数点后保留两位小数,四舍五入的函数及使用方法
2011-08-08 10:25 by 追忆似水流年, 14300 阅读, 2 评论, 收藏, 编辑
Math.Round(45.365,2) //Returns 45.36
C#中的Round()不是我们中国人理解的四舍五入,是老外的四舍五入,是符合IEEE标准的四舍五入,具体是四舍六入,下面的才是符合中国人理解的四舍五入
Math.Round(45.367,2,MidpointRounding.AwayFromZero);//45.37
Math.Round(45.365,2,MidpointRounding.AwayFromZero) //Returns 45.37
这个是非得想 使用 该方法 的解决方法 但是!!! 有BUG !! 输入 1.015 得到的结果是 1.01 !!!! 其他的没问题。
最终我建议不使用 这个方法 直接使用 ToString("F3") Fn n是几 就截取几位小数并且四舍五入!
此文章由人工翻译。 将光标移到文章的句子上,以查看原文。
|
译文
原文
|
Math.Round 方法 (Decimal, Int32)

将小数值按指定的小数位数舍入。
命名空间: System
程序集: mscorlib(在 mscorlib.dll 中)
返回值
类型:System.Decimal
最接近 d 的 decimals 位小数的数字。
异常 | 条件 |
---|---|
ArgumentOutOfRangeException |
decimals 小于 0 或大于 28。 |
OverflowException |
结果超出了 Decimal 的范围。 |
decimals 参数指定返回值中的小数位数以及范围 0 和 28。 如果 decimals 等于零,则返回整数。
如果 d 中 decimals 小数位置右侧的第一位数字的值为 5,则 decimals 位置中的数字向上舍入(如果为奇数)或不变(如果为偶数)。 如果 d 的精度小于 decimals,则返回 d 而不做更改。
此方法的行为遵循 IEEE 标准 754 的第 4 节。 这种舍入有时称为就近舍入或四舍六入五成双。 它可以将因单方向持续舍入中点值而导致的舍入误差降到最低。
若要控制 Round(Decimal, Int32) 方法使用的舍入类型,请调用 Decimal.Round(Decimal, Int32, MidpointRounding) 重载。
Math.Round 四舍五入问题 解惑 !的更多相关文章
- Math.Round四舍五入
Math.Round函数四舍五入的问题 今天客户跑过来跟我说,我们程序里面计算的价格不对,我检查了一下,发现价格是经过折算后的价格,结果是可能小数位较多,而单据上只能打印两位价格,所以就对价格调用 ...
- Math.Round四舍五入说明
Math.Round默认采用的不是四舍五入法, 而是四舍六入的银行家算法, 如何找回四舍五入法? Math.Round默认采用的不是四舍五入法, 而是四舍六入的银行家算法, 也就是四舍六入五考虑,五 ...
- Math.round(11.5)等于()Math.round(-11.5)等于()
几天前去面试,这道简单的题目居然做错了,看来基础就是慢慢积累的.并不断使用和复习才会成为高手,假设基础不是那么熟练.恐怕在成为高手的路上会困难重重.所以在做项目的间歇时间.偶尔回顾一下最基础的知识.是 ...
- Javascript四舍五入(Math.round()与Math.pow())
代码 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ ...
- C#中Math.Round()实现中国式四舍五入
C#中Math.Round()实现中国式四舍五入 C#中的Math.Round()并不是使用的"四舍五入"法.其实在VB.VBScript.C#.J#.T-SQL中Round函数都 ...
- .Net中Math.Round与四舍五入
有不少人误将Math.Round函数当作四舍五入函数在处理, 结果往往不正确, 实际上Math.Round采用的是国际通行的是 Banker 舍入法. Banker's rounding(银行家舍入) ...
- Math.Round函数四舍五入
Math.Round函数四舍五入的问题 今天客户跑过来跟我说,我们程序里面计算的价格不对,我检查了一下,发现价格是经过折算后的价格,结果是可能小数位较多,而单据上只能打印两位价格,所以就对价格调用 ...
- WinCE的C#编程,对float型进行四舍五入保留两位小数,小数进行四舍五入操作,Math.Round的应用案例。
private float ConvertFloat4Se5Ru(float flotValue) { int iValue = (int)Math.Round(flotV ...
- JAVA 四舍五入Math.round方法
今天由于测试场景,利息的计算中涉及小数点的保留.保留的规则是:两位小数+四舍五入方式 使用的语言是JAVA, 看了许多网上的方法.因为最后保留的小数还会进行计算.所以我考虑最好不要保留的结果是Stri ...
随机推荐
- 出现unmapped spring configuration files found
intell idea启动出现unmapped spring configuration files found提示. 把spring里面的内容都打勾.
- PHP Ajax跨域解决
PHP Ajax 跨域问题最佳解决方案 本文通过设置Access-Control-Allow-Origin来实现跨域. 例如:客户端的域名是client.runoob.com,而请求的域名是serve ...
- 【opencv入门篇】 10个程序快速上手opencv【上】
导言:本系列博客目的在于能够在vs快速上手opencv,理论知识涉及较少,大家有兴趣可以查阅其他博客深入了解相关的理论知识,本博客后续也会对图像方向的理论进一步分析,敬请期待:) PS:官方文档永远是 ...
- go-008-循环语句
一.循环语句[只有for] 1.基础结构: Go语言的For循环有3中形式,只有其中的一种使用分号. 和 C 语言的 for 一样: for init; condition; post { } 和 C ...
- 磁钉导航差速式AGV控制实验
磁钉导航AGV实验 2016-03 本机器是采用RFID电子地标配合磁钉传感器的定位导航AGV.本AGV已初步实现里程计精确解算,磁钉数据融合,AGV定点精准停车.原地旋转换向.远程无线调度的功能,初 ...
- .........请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。
今天研究membership的时候出现的问题.在此记录一下. 解决办法就是,将"C:\Program Files (x86)\Microsoft Web Tools\Packages\Asp ...
- SIP UserAgent (B2BUA client)——pjsip
SIP UserAgent常用的SIP协议栈有pjsip/bell-sip/sofia-sip/libeXosip/libre等 https://github.com/staskobzar/sip_s ...
- 脱离JVM? Hadoop生态圈的挣扎与演化
本文由知乎<大数据应用与实践>专栏 李呈祥授权发布,版权所有归作者,转载请联系作者! 新世纪以来,互联网及个人终端的普及,传统行业的信息化及物联网的发展等产业变化产生了大量的数据,远远超出 ...
- jmeter使用代理服务器录制脚本端口号被占用
初学jmeter工具,在设置端口号时,使用8080,IE设置的局域网端口也为8080,启动代理服务器时,提示:Could not create script recorder-port in use. ...
- Look for this newest GS Jordan 6 Floral
Named 'Bulls Over Broadway' and 'Gym Red', the most recent variation from the New Jordans 2015 is fo ...