JAVA 在创建BigDecimal()时存在失真的情况:
1、参数类型为double的构造方法的结果有一定的不可预知性。newBigDecimal(0.1) 所创建的BigDecimal不等于0.1,它实际上等于0.1000000000000000055511151231257827021181583404541015625。这是因为0.1无法准确地表示为 double,所以传入到构造方法的值不会正好等于 0.1。
2、另一方面,String 构造方法是完全可预知的:写入 newBigDecimal("0.1") 将创建一个 BigDecimal,它正好等于预期的 0.1。因此,比较而言,通常建议优先使用String构造方法。