本篇文章将以如下两个简单的案例为例,对Java浮点数数据类型做一些简单扩展总结。
案例一:float与double
代码如下:
float f=0.1f; //0.1
double d=1.0/10; //0.1
System.out.println(f==d);
System.out.println(f);
System.out.println(d);
运行结果如下,和我们想的一样,f和d是不相等的。
案例二
float f1=2131313131313f;
float f2=f1+1;
System.out.println(f1=f2);
运行结果如下,在这里,f1是我们随便输入的数据,f2=f1+1。f1和f2是两个完全不一样的数据,然而结果f1=f2。
总结
浮点数能表现的字长往往是有限的,同时也是离散的,浮点数一般存在舍入误差,接近但不等于。所以最好完全避免使用浮点数进行比较。例如银行业务不使用float或double进行比较,使用的是BigDecimal类(数学工具类)。