基本数据类型中为什么会出现精度损失,怎么样会避免出现精度损失
loat 32位
出现精度损失的原因:
输入的值为十进制,而在计算的过程中,是要把十进制的小数位值在有限位的情况下转变为二进制的小数,就会出现精度的损失。
结论:二进制的小数,无法十分精准的表达十进制的小数
避免出现精度损失:
a. 可以使用BigDecimal,注意:在进行计算的时候,转为String类型,使用BigDecimal提供的方法来实现计算
b. 把小数位转化为整数位存储,如用Long类型,如金钱3.99 金钱单位值的计算可以用分位来表示即399分
额外知识点:BigDecimal底层原理是通过intCompact(扩大N倍的Long类型如:199.99->19999)、scale(小数位数),将值扩大变为Long类型再进一步进行计算