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
学习的时间不一定要特定安排