要获得准确的结果,
10.0001您需要使用String构造函数或
valueOf(它基于double的规范表示构造一个BigDecimal):
BigDecimal bd = new BigDecimal("10.0001");System.out.println(bd.toString()); // prints 10.0001//or alternativelyBigDecimal bd = BigDecimal.valueOf(10.0001);System.out.println(bd.toString()); // prints 10.0001问题
new BigDecimal(10.0001)在于参数是a
double,并且恰巧双精度不能
10.0001正确表示。因此
10.0001,“转换”为最接近的可能的两倍,这就是
10.000099999999999766941982670687139034271240234375您所
BigDecimal显示的。
因此,使用double构造函数几乎没有意义。
您可以在此处了解更多信息,将小数点后移两位



