float作为单精度浮点,是存在较大精度损失的。这里的精度损失大小和阶数有关系,当阶数很大时,精度损失也很大。
double也有精度损失,但由于位数多,所以精度更高。
在处理有精度损失的数据时,要关注精度损失对计算结果的影响。
常见情况为 大数吞小数 的情况
即 大数 + 小数 时,小数的值 < 大数的精度, 导致加上过后,在计算机里表示时恰好把小数这部分的值精度损失掉了。
(如float 作累加++,加到6w多就加不上去了)
对于这种问题的解决方案:
1)高精度加法-------kahn求和
2)避免出现大数 + 小数情况,尽量使各个数的范围是差不多量级