通过debug发现,float 直接转换double会出现误差。数据类型需要通过String转一道

 

 public static void main(String[] agrs){
        double a=2.8d;
        float a1=2.8f;
        double a2=a1;
        System.out.println("a1==a2:"+(a1==a2));
        System.out.println("a==a2:"+(a==a2));
        System.out.println(a1);
        System.out.println(a2);
    }

结果

a1==a2:true
a==a2:false
2.8
2.799999952316284

如例子所示,2.8转为double 成了2.799999952316284。,失去精度。

 

public static void main(String[] agrs){
        double a=2.8d;
        float a1=2.8f;
        double a2=Double.valueOf(String.valueOf(a1));
        System.out.println("a1==a2:"+(a1==a2));//java自动将a1转为double
        System.out.println("a==a2:"+(a==a2));
        System.out.println(a1);
        System.out.println(a2);
    }

结果

a1==a2:false  
a==a2:true
2.8
2.8

 

相关文章:

  • 2021-09-05
  • 2022-12-23
  • 2021-08-06
  • 2022-12-23
  • 2022-01-30
  • 2022-12-23
  • 2021-12-25
  • 2021-12-25
猜你喜欢
  • 2022-01-25
  • 2022-03-07
  • 2022-12-23
  • 2022-12-23
  • 2021-09-28
  • 2022-12-23
  • 2021-12-19
相关资源
相似解决方案