java float直接轉double會出現誤差


通過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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM