1.单纯实际定义的浮点数,可以用“==”:
double a=1.2;
double b=1.2;
if(a==b)
System.out.println("yes");
else
System.out.println("no");
输出:
yes
2.但是加入其中一个浮点数是通过计算得出来的,就不能用“==”:
double a=1.0;
double b=0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1;
System.out.println(b);
if(a==b)
System.out.println("yes");
else
System.out.println("no");
输出:
0.9999999999999999
no
这是因为计算机运算都是通过二进制进行计算的,0.1无法准确的转换为二进制数,所以10个0.1相加得到0.9999999999999999
3.所以判断浮点数相等时,应该作差,让后让差的绝对值小于某个极小数:
if((a-b)<Math.pow(10,-6))
System.out.println("yes");
else
System.out.println("no");
输出:
yes