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