Java中新的BigDecimal()的坑

  

先看一段代码示例:

  
 <代码> system . out。println(新BigDecimal (0.99));
  system . out。println(新BigDecimal (" 0.99 "));
  System.out.println (BigDecimal.valueOf (0.99));
  system . out。println(新BigDecimal (Double.valueOf (0.99)));
  system . out。println(新BigDecimal (Double.valueOf (0.99) .toString())),  
  

输出结果如下:

  
 <代码> 0.9899999999999999911182158029987476766109466552734375
  0.99
  0.99
  0.9899999999999999911182158029987476766109466552734375
  0.99  
  

可以看到新BigDecimal (double)类型时,小数的精度出现扩展。
总结:
如果使用新BigDecimal()时,尽可能转换为字符串,或者直接使用BigDecimal.valueof (double)

Java中新的BigDecimal()的坑