问答详情
源自:3-8 使用 Math 类操作数据

为什么最后两行参数为3.4f,3.4调用round取整都返回3,不应该师加上0.5之后返回4吗

package com.数字处理类;

public class IntFunction {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  //返回一个大于等于参数的整数
  System.out.println("使用cell()方法取整:"+Math.ceil(5.2));
  //返回一个小于等于参数的整数
  System.out.println("使用floor()方法取整:"+Math.floor(2.5));
  //返回一个最接近参数的整数
        System.out.println("使用rint()方法取整:"+Math.rint(2.7));
        //加上0.5之后返回最接近参数的整数
        System.out.println("使用round()方法取整:"+Math.round(3.4f));
        //加上0.5之后返回最接近参数的long类型
        System.out.println("使用round()方法整:"+Math.round(3.4));
 }

}

提问者:年纪轻轻想有猫 2018-07-20 19:57

个回答

  • weixin_慕雪5341938
    2020-04-28 22:37:57

     “加上0.5之后返回最接近参数的long类型”这句话的意思就是四舍五入。不用管什么加0.5,不用管什么0.5,把这句话理解为四舍五入就对了。

  • qq_Kindergarten_0
    2018-07-20 20:29:20

    查询API知道:

    public static long round(double a)

    返回最接近的参数long ,其中long四舍五入为正无穷大。

    特殊情况:

    • 如果参数是NaN,结果为0。

    • 如果参数为负无穷大或小于或等于值Long.MIN_VALUE的值,则结果等于值Long.MIN_VALUE

    • 如果参数为正无穷大或大于或等于Long.MAX_VALUE的值,则结果等于值Long.MAX_VALUE

    所以这个方法可以看做是四舍五入