# 代码
double x = 1.0-0.1-0.1-0.1-0.1-0.1
System.out.println(x == 0.5);
#输出
False
这里 x 不是精确等于0.5,而是0.5000000000000001。
解决办法:通过测试两个数的差是否小于某个非常小的的值EPSILON来判断。
当比较的两个数为double类型。通常设置EPSILON = 10^(-14)来比较。
当比较的两个数为float类型。通常设置EPSILON = 10^(-7)来比较。
# 代码
final double EPSILON = 1E-14;
double x = 1.0-0.1-0.1-0.1-0.1-0.1
System.out.println(Math.abs(x-0.5)<EPSILON);
#输出
True
P.S.epsilon “ε” 是一个希腊字母,常用于表示一个非常小的值。