// 取小数点前两位,并四舍五入
double dd = 12.335;
dd = Math.round(12.335 * 100);
System.out.println(dd / 100); double ds = (Math.round(12.335 * 100)) / 100;
System.out.println(ds);请问  dd  ds  为什么不一样?输出结果是12.34   12.0  ?

解决方案 »

  1.   

    因為 Math.round(double) 回傳 long上面是1234轉成double,然後 除100 是double /100所以得到12.34(double)下面是 1234(long)/100(int) 得到 12(long) 再轉成 double變成12.0(double)
      

  2.   

    Math.round(double)返回的是long型
    dd = Math.round(12.335 * 100); //先计算Math.round得到long型的1234,然后再把long型转为double赋给dd
    System.out.println(dd / 100); //dd是double型,所以100转为double型再计算,得到结果也是double型,即12.34double ds = (Math.round(12.335 * 100)) / 100; //先计算Math.round得到long型的1234,然后再把ing型的100转为long型,然后计算long型的1234/100,因为是long型,所以结果是12,然后再把12转为double型,即12.0