Java中的浮点数为什么不精确?
- 计算机中使用二进制运算,程序中的十进制数转换为二进制数运算的时候,Float和Double小数点后的小数转换为二进制的时候会发生无限循环的情况,通常会取一个无限近似于原值的近似值,所以会发生失去精确度的情况。
- 在金融,工程,科学等领域,对计算数值的精确度有很高的要求,我们采用String + BigDecimal来解决精确度丢失的情况。
BigDecimal d01 = new BigDecimal(“0.1”);
BigDecimal d02 = new BigDecimal(“0.2”);
//计算d01和d02的乘积
BigDecimal d03 = d01.multiply(d02);
//将d03转换为双精度浮点数
double d04 = d03.doubleValue();