Math.Round() -- c# 与java的区别

明明知道,java与c#在很多方面都有很多不同,但是如果让详细描述,却不一定能说出来多少.
前段时间碰见一个问题,才恍然大悟般的,明白了一条不同.
有同事的同学笔试,有道题目是 Math.Round(11.5) 与Math.Round(-11.5)的值.
一个同事是java的,直接答道,不就是12和-11么.
另外一个同事是搞.Net的,写了个程序,结果是12和-12.
咦?结果怎么不一样?
分别查了java帮助文档和MSDN帮助文档,才发现,原来,是标准不同引起的.
java的Round,是+0.5取整,所以,结果当然是12和-11了.
而.net的不同,而且描述也负责的多.在它的备注里,有这么一条说明:
此方法的行为遵循 IEEE 标准 754 的第 4 节.这种舍入有时称为就近舍入或银行家舍入.
哦,到此为止,终于明白了,为什么会不同.但是,什么又是银行家舍入呢?
找了半天,才找到解释说明:
对于0-9这10个数字来说,他们出现在某一位的几率是相等的.在金融结算中,如果单纯的使用四舍五入,那么,入参(5-9)会比舍参(0-4)多一个,也就是说,金融机构会亏本,考虑到这种情况,也为了舍入更加公平,出现了就近舍入.既然每一位出现0-9的几率相等,那么,该位是偶数还是奇数的几率也就相等,对于舍弃位,0-4舍,6-9进没有什么疑义,主要就在于对中间数5的处理.此时,决定5是否舍弃交由它的前一位决定,如果前一位是偶,则舍弃,如果前一位是奇,则进位,如此,就实现了大致公平的舍入处理.
按照银行家舍入,考虑11.5和-11.5, 对于11.5,5前边是奇数1,故进位,结果为12;对于-11.5,变成了-12.因此,该舍入应该叫做四舍六入五向偶法.
原来如此.
来源:迈胜教育 、JAVA论坛、JAVA技术论坛 、

转载于:https://www.cnblogs.com/521taobao/archive/2012/03/17/2402499.html

Math.round函数可以通过传入一个数字作为参数来调用。该函数会将传入的数字四舍五入为最接近的整数。例如,Math.round(1.6)的结果是2,Math.round(1.5)的结果是2,Math.round(1.4)的结果是1。同样地,负数也可以被四舍五入,例如Math.round(-1.4)的结果是-1,Math.round(-1.5)的结果是-1,Math.round(-1.6)的结果是-2。\[1\] #### 引用[.reference_title] - *1* [Math.round(-1.5)解读](https://blog.csdn.net/qq_42114504/article/details/106009338)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [C#Math.Round()](https://blog.csdn.net/qq_39956202/article/details/107837263)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【JAVAMath.Round()函数常见问题“四舍5入”](https://blog.csdn.net/weixin_32159633/article/details/114757620)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值