今天遇到了这个问题,也查阅了其他资料。得出了一个结论。
两个浮点型数据不建议使用==和!=来判断是否相等。因为存在精度损失。
来个大家都在用的例子:
float a = 10.222222225f; float b = 10.222222229f;
判断这两个浮点型数据是否相等。显而易见我们人看来这两个数是不相等的。但计算机却认为是相等的。因为在赋值的时候就出现了精度损失。
这种情况后续的比较都没有意义了。
因此浮点型的比较,只能在一定精度范围内进行比较,我取的6位。float精确到小数点后6~7位。6位一定能精确到。
最后的解决方案就是规定精确到小数点后六位取到的数做减法,!=0就认为不相等。
以上为个人见解,仅供参考。



