2023年王炸面试题每日一练--为什么会有精度的损失

基本数据类型中为什么会出现精度损失,怎么样会避免出现精度损失

2023年王炸面试题每日一练--为什么会有精度的损失_第1张图片

loat 32位

出现精度损失的原因:

输入的值为十进制,而在计算的过程中,是要把十进制的小数位值在有限位的情况下转变为二进制的小数,就会出现精度的损失。

结论:二进制的小数,无法十分精准的表达十进制的小数

避免出现精度损失:

a. 可以使用BigDecimal,注意:在进行计算的时候,转为String类型,使用BigDecimal提供的方法来实现计算

b. 把小数位转化为整数位存储,如用Long类型,如金钱3.99 金钱单位值的计算可以用分位来表示即399分

额外知识点:BigDecimal底层原理是通过intCompact(扩大N倍的Long类型如:199.99->19999)、scale(小数位数),将值扩大变为Long类型再进一步进行计算
 

你可能感兴趣的:(面试题,java知识,java,数据结构,后端,面试)