类型float的的计算不精确的问题
System.out.println(0.1f*0.1f);
得到0.0100001
不精确的原因:因为计算机是用二进制存储小数的,这个二进制不能精确表示0.1只能表示一个无限接近0.1的一个数,为什么0.1不能精却表示因为二进制使用2的多少次方
2^-1 0.5
2^-2 0.25
2^-3 0.125
2^-4 0.0625
所以进行计算的结果会出现不精确的情况,当误差足够小的时候就看上去是精确的,其实一般是不精确的
要保持精确用BigDecimal的类型,就是效率低