首页 > 试题广场 >

Math.round(11.5) 等于:()

[单选题]
Math.round(11.5) 等于:()
  • 11
  • 11.5
  • 12
  • 12.5
推荐
首先要注意的是它的返回值类型是long,如果 Math.round(11.5f),那它的返回值类型就是int,这一点可以参考API
其次  Returns the closest long to the argument, with ties rounding to positive infinity
它返回的是一个最接近参数的long 值(例如: Math.round(11.6) = 12; Math.round(-11.6) = -12; Math.round(-0.1) = 0; Math.round(0.1) = 0 ),那如果出现向上向下距离一样的数值, 比如题目中的11.5,该如何处理呢 ,别着急,看它的后半句话, with ties rounding to positive infinity( 同时向正无穷方向取舍或者翻译成取较大的值,英语水平较差,只能翻译成这样了;
例子:    Math.round(11.5)  ,首先与 11.5最接近的有两个整数 11 和 12,取较大的那结果就是12;
           Math.round(-11.5), 首先与 -11.5最接近的有两个整数 -11 和 -12,取较大的那结果就是-11;
           Math.round(0.5), 首先与 0.5最接近的有两个整数 0 和 1,取较大的那结果就是1;
           Math.round(-0.5), 首先与 -0.5最接近的有两个整数 -1 和 0,取较大的那结果就是0;
然后它有三个特例:
1. 如果参数为 NaN(无穷与非数值 ,那么结果为 0。
2.如果参数为负无穷大或任何小于等于 Long.MIN_VALUE 的值,那么结果等于Long.MIN_VALUE 的值。
3.如果参数为正无穷大或任何大于等于 Long.MAX_VALUE 的值,那么结果等于Long.MAX_VALUE 的值。
最后 最好还是看一下API或者源码,不要信了我的邪
编辑于 2017-03-19 22:23:15 回复(8)
round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。 ceil是天花板,向上取整。 floor是地板,向下去整。
发表于 2017-01-15 11:16:18 回复(2)

Math类中提供了三个与取整有关的方法:ceilfloorround,这些方法的作用与它们的英文名称的含义相对应,例如,ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11floor的英文意义是地板,该方法就表示向下取整,Math.ceil(11.6)的结果为11,Math.ceil(-11.6)的结果是-12;最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12Math.round(-11.5)的结果为-11

发表于 2017-09-05 12:16:37 回复(1)
四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一!

发表于 2017-05-14 18:43:48 回复(3)

1.先说下怎么理解

round()方法可以这样理解:

将括号内的数+0.5之后,向下取值,

比如:round(3.4)就是3.4+0.5=3.9,向下取值是3,所以round(3.4)=3; 

round(-10.5)就是-10.5+0.5=-10,向下取值就是-10,所以round(-10.5)=-10

所以,Math.round(11.5)=12;

扩展:常用的三个

Math.ceil求最小的整数,但不小于本身.  

ceil的英文意义是天花板,该方法就表示向上取整,

例子:

所以,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;

Math.floor求最大的整数,但不大于本身.

floor的英文意义是地板,该方法就表示向下取整,

例子:

floor的英文意义是地板,该方法就表示向下取整,

所以,Math.floor(11.6)的结果为11,Math.floor(-11.6)的结果是-12;


发表于 2018-05-10 23:17:06 回复(1)
public static void main(String[] args) {         System.out.println("Math.round(-11.5)="+Math.round(-11.5));         System.out.println("Math.round(11.5)="+Math.round(11.5));                 System.out.println("Math.round(-12.5)="+Math.round(-12.5));         System.out.println("Math.round(12.5)="+Math.round(12.5));         // Math.round()是四舍五入,往x轴正方向取值     } 
我们再来看看源码:
 public static int round(float a) {
        if (a != 0x1.fffffep-2f) // greatest float value less than 0.5
            return (int)floor(a + 0.5f);
        else
            return 0;
    }

/**********************************/
 public static long round(double a) {
        if (a != 0x1.fffffffffffffp-2) // greatest double value less than 0.5
            return (long)floor(a + 0.5d);
        else
            return 0;
    }

//可以看到,round()的四舍五入的做法是在参数上加上0.5再向下取整

编辑于 2017-10-29 13:07:41 回复(0)
准确说是12.0
发表于 2017-10-25 11:27:31 回复(0)
这个方法返回的是long型的,天花板,地板那两个方法返回的是double型
发表于 2017-06-24 10:34:15 回复(0)
      Math.round()方法实现的时候是将原来的数字加上0.5后再向下取整 (注意向下是指小于等于它的最大整数),也就是四舍五入的意思,往x轴的正方向取值。
发表于 2017-05-09 19:39:40 回复(1)
向上取整
发表于 2017-01-02 23:42:04 回复(1)

题目大概是问Math.Round(11.5);和Math.Round(-11.5);返回值是多少?

原来不是四舍五入这么简单,其实是四舍六入,但是五是很有讲究的。要是遇到五则取离前一位最近的偶数。比如,这条题目,11.5返回值就是12.0;-11.5返回值就是-11.0;

 但是这里其实也不是这么简单:

看下面的例子:Math.Round(3.44, 1); //Returns 3.4.Math.Round(3.45, 1); //Returns 3.4.Math.Round(3.46, 1); //Returns 3.5.

依照他的例子得到的是"五舍六入",我改变了一下数字得到的结果将完全改变。

Math.Round(3.445, 1); //Returns 3.4.
Math.Round(3.455, 1); //Returns 3.5.
Math.Round(3.465, 1); //Returns 3.5.

Math.Round(3.450, 1); //Returns 3.4.(补0是无效的)

Math.Round(3.4452, 2); //Returns 3.45.
Math.Round(3.4552, 2); //Returns 3.46.
Math.Round(3.4652, 2); //Returns 3.47.

-----------------------------------------------

Math.Round(3.44, 1) = 3.4
Math.Round(3.45, 1) = 3.4
Math.Round(3.46, 1) = 3.5 
-----------------------------------------------
Math.Round(3.54, 1) = 3.5
Math.Round(3.55, 1) = 3.6
Math.Round(3.56, 1) = 3.6 
-----------------------------------------------
Math.Round(3.64, 1) = 3.6
Math.Round(3.65, 1) = 3.6
Math.Round(3.66, 1) = 3.7 
-----------------------------------------------
Math.Round(3.74, 1) = 3.7
Math.Round(3.75, 1) = 3.8
Math.Round(3.76, 1) = 3.8 
这种舍入方法叫做银行家舍入(Banker'sRound),这就是已经规定下来的标准、Round的标准、世界的标准。

 这里,其实是根据方法的行为遵循 IEEE 标准 754 的第 4 节。这种舍入有时称为就近舍入或银行家舍入;

总结的口诀是:四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一!

按照这样的口诀去做确实能验证以上的返回结果!


发表于 2017-08-06 19:46:01 回复(0)

四舍五入

发表于 2019-09-17 11:16:54 回复(0)
发表于 2019-09-04 09:15:43 回复(0)
加0.5在取整
发表于 2019-07-27 21:23:59 回复(0)
 round方法,表示“四舍五入”,Math.round(11.5)的结果是12
发表于 2019-04-26 11:51:40 回复(0)
发表于 2019-04-22 16:55:35 回复(0)
floor 返回不大于的最大整数  round 则是4舍5入的计算,入的时候是到大于它的整数 round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11 --------------------- 作者:cg_program 来源:CSDN 原文:https://blog.csdn.net/foart/article/details/4295645 版权声明:本文为博主原创文章,转载请附上博文链接!
发表于 2019-03-06 16:20:42 回复(0)
round 四舍五入 ceil向上取整 floor向下取整
发表于 2019-03-06 08:26:01 回复(0)
+0.5向下取整
发表于 2019-02-15 10:23:20 回复(0)
ceil、向上取整 floor、向下取整 round四舍五入
发表于 2018-10-24 19:29:37 回复(0)