两个浮点数不能用”==”精确比较 浮点数只能接近不能相等
if(0.1+0.2==0.3){ System.out.println(true); }
永远不会输出 浮点数运算时进行舍入 产生溢出数据丢失导致数据是不精确的 故不可直接进行 == 运算
解决办法 : 使用整数,而非浮点数
2 . 运算出现浮动点数问题
1. 运算时 1/a 会出现浮点数 两个整数相除 数值丢失问题
for(int a=20; a>=1;a–){ for(int b=a-1; b>=1;b–){ for(int c=b-1; c>=1;c–){ for(int d=c-1; c>=1;d–){ if(1/a+1/b+1/c+1/d==1){ System.out.println(a+”,”+b+”,”+c+”,”+d); }
}
}
}
}
错误
1. 整数相除数值丢失
2. 浮点数不能精确比较、
解决办法:
1. 公式转化 b*c*d+a*c*d +a*b*d+a*b*c==a*b*c*d
2. 相减 比较一个精度值
eg: a-b<c a 、b比较