java 类型转换问题:float直接转double会出现精度误差

解决思路

float 转换为 String,再将 String 转换为 double

以下为测试:

1.直接转换

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.按照解决思路转换

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

总结:业务上遇到此类转换要记得使用解决思路

你可能感兴趣的:(类型转换,java,后端)