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 ...
随机推荐
- 【转】浏览器Request Header和Response Header的内容
1)请求(客户端->服务端[request]) GET(请求的方式) /newcoder/hello.html(请求的目标资源) HTTP/1.1(请求采用的协议和版本号) Ac ...
- Buy the souvenirs---hdu2126(01背包输出方案数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2126 有n个物品每个物品的价格是v[i],现在有m元钱问最多买多少种物品,并求出有多少种选择方法: 如 ...
- Java设计模式-抽象工厂模式(Abstarct Factory)
抽象工厂模式 举个生活中常见的例子,组装电脑,在组装电脑时,通常需要选择一系列的配件,比如CPU,硬盘,内存,主板,电源,机箱等,为了讨论使用简单,值考虑选择CPU和主板的问题. 事实上,在选择CPU ...
- C#建WindowForm调用R可视化
众所周知R软件功能非常强大,可以很好的进行各类统计,并能输出图形.下面介绍一种R语言和C#进行通信的方法,并将R绘图结果显示到WinForm UI界面上的方法,文中介绍的很详细,需要的朋友可以参考下. ...
- 文件传输(xmodem协议)
https://www.menie.org/georges/embedded/ 需要移植如下两个基础的硬件读写函数 int _inbyte(unsigned short timeout); void ...
- jQuery异步加载数据并添加事件示例
当时项目是通过树形栏进行权限控制的,管理员可以对从数据库去的数据动态生成树形栏进行增删改查操作,可是用$(".XX").click();方法是不行的. 1.之前用的是jq1.4.3 ...
- matplotlib显示栅格图片
参考自Matplotlib Python 画图教程 (莫烦Python)(13)_演讲•公开课_科技_bilibili_哔哩哔哩 https://www.bilibili.com/video/av16 ...
- jenkins slave启动报错:hudson.util.IOException2: Slave JVM has terminated. Exit code=126
添加mac slave节点报错如下:Expanded the channel window size to 4MB [11/07/14 19:11:54] [SSH] Starting slave p ...
- execute sp_executesql 用变量获取返回值
execute sp_executesql 用变量获取返回值 1,EXEC的使用 2,sp_executesql的使用 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_exe ...
- Jquery each循环用法小结
var str = res.ZhaoPian; var piclist = str.substring(0, str.length - 1).split(','); $.each(piclist, f ...