Java中BigDecimal的构造注意事项

禁止使用构造方法BigDecimal(double)的方式把 double值转化为BigDecimal对象。
因为:BigDecimal(double)存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常。如:

BigDecimal g = new BigDecimal(0.1F);

实际的存储值为:0.10000000149
正例:优先推荐入参为String的构造方法,或使用BigDecimal 的 valueOf方法,此方法内部其实执行了Double的toString,而Double的toString按double的实际能表达的精度对尾数进行了截断。

BigDecimal recommend1 = new BigDecimal( "0.1");
BigDecimal recommend2 = BigDecimal.valueOf(0.1);

你可能感兴趣的:(java,java,开发语言,c++)