问题是
float精度有限。它不能完全代表
0.0065。(
double当然,也是如此:它具有更高的精度,但仍然是有限的。)
使上述问题更加明显的另一个问题
0.001是a
double而不是a
float,因此您
float将被提升为
double执行减法的操作,当然,此时系统无法恢复a所丢失的精度。
double本来
可以代表的。为了解决这个问题,您可以编写:
float f = Float.parseFloat("0.0065") - 0.001f;使用
0.001f代替
0.001。



