使用 BigDecimal 类进行精确计算时,最好使用带有 String 类型参数的构造方法。这是因为使用基本类型参数或双精度浮点数进行 BigDecimal 对象的构造时,可能会发生精度丢失或舍入错误的情况。
例如,以下代码使用基本类型参数进行 BigDecimal 构造:
BigDecimal bd = new BigDecimal(0.1);
System.out.println(bd);
预期结果是 0.1,但是实际上输出结果为:
0.1000000000000000055511151231257827021181583404541015625
因此,为了避免这种情况,建议使用字符串参数进行 BigDecimal 构造,如下所示:
BigDecimal bd = new BigDecimal("0.1");
System.out.println(bd);