为什么BigDecimal的值与构造函数中提供给它的值不匹配?

时间:2015-12-11 15:40:19

标签: java system bigdecimal

我在Java中有一个BigDecimal。我知道这是一个在大多数情况下不会使用的值。执行此代码时,命令控制台将打印出以下内容。 1789984896489654735783157941777104561834014693972171030528。这不是完整的BigDecimal。我的问题是为什么不打印完整的数字?

BigDecimal bD = new BigDecimal(1789984896489654689748964897484894895484896546845987465874.54644685486451845867467986798679864598764589459468746587946578945);
System.out.println(bD);

1 个答案:

答案 0 :(得分:4)

问题是您正在使用的构造函数:BigDecimal(double)。大长的数字字符串将转换为Java double,它对于您尝试放入BigDecimal的内容几乎没有足够的精确度。

您需要使用BigDecimal(String)构造函数:

BigDecimal bD = new BigDecimal("1789984896489654689748964897484894895484896546845987465874.54644685486451845867467986798679864598764589459468746587946578945");
//                             ^                                                                                                                            ^

Demo.