`
凤凰涅磐
  • 浏览: 86539 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

(转)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:正数,四舍五入;负数,五舍六入

c#:四舍六入,五:前一位为基数-入,前一位为偶数-舍。

 

分享到:
评论

相关推荐

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

    《Math.Round()在C#与Java中的差异及银行家舍入法》 在编程领域,尤其是在涉及数值计算的时候,精确的舍入操作至关重要。本文将深入探讨Math.Round()函数在C#和Java这两种广泛使用的编程语言中的不同表现,以及背后...

    WGS84坐标下根据经纬度计算两点之间的距离

    - `Math.cos(p1.y * (Math.PI / 180)) * Math.cos(p2.y * (Math.PI / 180)) * Math.cos((p1.x - p2.x) * (Math.PI / 180))`部分则表示了经度差与纬度余弦值的乘积。 - 最终结果通过`Math.round(d * 1000)`来获取以...

    java script 应用基础.pdf

    JavaScript是一种广泛应用于网页和网络应用的脚本语言,属于Java家族的一员,但与Java语言本身并不相同。在JavaScript中,你可以找到很多与C家族语言(如C,C++,C#)共享的概念和语法特性。这里我们将深入探讨...

    android面试宝典-最新版

    Math.round(11.5) 等于 12,Math.round(-11.5) 等于 -11。 4. Java 逻辑运算符: 在 Java 中,逻辑运算符 && 和 || 的优先级是不同的。&& 的优先级高于 ||。 5. Android 生命周期: 对一些资源以及状态的操作...

    一些java面试题目

    5. **Collection与Collections的区别**:`Collection`是所有集合框架接口的顶级接口,如`List`和`Set`继承自它。`Collections`是一个工具类,提供了许多静态方法,用于操作集合,如排序、查找和同步控制。 6. **...

    java script 应用基础.docx

    JavaScript是一种广泛应用于网页和网络应用的脚本语言,属于C家族的一员,与C、C++、C#、Java等语言有着诸多共通之处。在JavaScript中,数学运算、控制结构和其它杂项是编程的基础。 1. 数学相关操作: - 运算符:...

    sishewuru.rar_四舍五入

    在C#中,我们可以使用`Math.Round()`方法: ```csharp double number = 123.456; double rounded = Math.Round(number, 2); // 结果为123.46 ``` 除了标准的四舍五入,还有其他的舍入策略,如向零取整(ROUND_TO_...

    2021春招C#.NET笔试题基础篇.pdf

    C#实现多态的过程中的overload重载与override重写的区别: overload重载指的是在同一个类内声明具有相同名称但参数列表不同的方法。override重写则是子类重写父类的方法,需要使用override关键字,并且方法签名必须...

    一套完整的java面试题

    5. Math.round(11.5)等于12,Math.round(-11.5)等于-11。 6. short s1 = 1; s1 = s1 + 1;会报编译错误,因为int与short相加结果为int。而s1 += 1;会自动拆箱、转换并装箱,因此不会报错。 7. 数组有length()方法,...

    各种语言时间戳转换方法.docx

    var unixTimestamp = Math.round(new Date().getTime() / 1000); var commonTime = new Date(unixTimestamp * 1000).toLocaleString(); ``` .NET / C# C# 中可以使用 `DateTime` 结构的 `Now` 属性获取当前时间,...

    2021-2022计算机二级等级考试试题及答案No.14379.docx

    这是因为`(int)Math.ceil(f)`计算结果为3,而`(int)Math.round(d)`计算结果为3,两者相乘得到9。 ### 22. VFP中记录长度的计算 - 在Visual FoxPro中,使用`COUNT`函数可以统计表中每条记录的实际可用字段的总宽度。...

    2021-2022计算机二级等级考试试题及答案No.4479.docx

    2. JavaScript四舍五入:JavaScript中的`Math.round()`函数用于将数值四舍五入为最接近的整数。例如,`Math.round(6.25)`会返回6。 3. HTML换行:在HTML中,` `标记用于实现换行,它是不闭合的标签。 4. SQL...

    各种语言获取Unix时间戳的方法

    long unixTimestamp = Math.round(date.getTime() / 1000); System.out.println(unixTimestamp); } } ``` #### JavaScript JavaScript中可以使用`new Date().getTime()`获取当前时间的毫秒数,然后除以1000得到...

    NET程序员面试题汇总

    - **Math.round 方法**:`Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 - **short 变量操作**:`short s1 = 1; s1 += 1;`没有错误,因为+=会自动类型转换。 - **sleep() 和 wait()**:`sleep()`暂停...

    数组排序和计算练习.zip_trickyua_数组排序和计算练习

    4. **浮点数处理**:平均值通常会得到一个浮点数,为了得到平均值小数点后一位,我们可以使用`Math.Round()`方法(C#)或`round()`函数(Python),指定精度为1位小数。 5. **控制台输出(Console Output)**:处理...

    java面试题

    答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式允许其service方法,一个实例可以服务于多个请求,并且其实例一般不会被销毁,而CGI对每个请求都产生新的进程,服务完后就销毁,所以效率上...

    2021-2022计算机二级等级考试试题及答案No.1266.docx

    19. Java中的`Math.round()`函数用于四舍五入。 20. 包声明语句`package MyPackage`应置于源代码文件顶部。 21. C语言标识符不能包含`.`,所以`ab.c`是非法的。 22. 结构化程序设计的三大基本结构是顺序、选择和循环...

    网页短信自动回复帮助文档

    - **JavaScript**:`Math.round(new Date().getTime() / 1000)`。 - **C#**:`long epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000`。 - **MySQL**:`SELECT unix_timestamp(now...

    计算机二级Web程序设计模拟卷(三).docx

    11. JavaScript中,能够把6.25四舍五入为最接近的整数的函数是`Math.round(6.25)`,因此D是正确答案。 12. 目前Internet上应用最广泛的服务是Web服务,即通过HTTP协议提供信息浏览和交互的服务。 13. 在CSS文件中...

    Does the parameter type of the setter match the return type of the getter?

    return (int) Math.round(this.preciseAge); } public void setAge(int age) { this.preciseAge = age; } ``` 在这个例子中,虽然getter返回`int`,setter接受`int`,但它们都是处理同一个`float`类型变量`...

Global site tag (gtag.js) - Google Analytics