开发线上代码时候,测试的同事发现了一个bug,在判断
Double A = null;
Double B = 2.3333333;
if(!A.equals(B)){ ...... }
报错的大致意思是:float跟double作比较的时候,会有精度影响,这个函数不能判断到精度很高的值相等。
仔细想想:在double值中,电脑在最后一些小数中是随机生成的,不能两个值直接判断相等。
一般的方法:当两个值的差小于某个很小的数值时候,则认为两个值相等。
解决:
double epsilon = 0.00000001
if(Math.abs(A - B) < epsilon)