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

Java 为什么BigDecimal的值与构造函数中提供给它的值不匹配?,java,system,bigdecimal,Java,System,Bigdecimal,我在Java中有一个BigDecimal。我知道这是一个在大多数情况下不会使用的值。当执行此代码时,我的命令控制台打印出以下内容:1789984896489654735783157941777104561834014693972171030528。这不是完整的BigDecimal。我的问题是为什么不打印完整的数字 BigDecimal bD = new BigDecimal(1789984896489654689748964897484894895484896546845987465874.54

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

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

问题是您正在使用的构造函数:
BigDecimal(double)
。大的长字符串被转换成Java的
double
,它的精度远远不够您试图输入的
BigDecimal

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

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

问题在于您使用的构造函数:
BigDecimal(double)
。大的长字符串被转换成Java的
double
,它的精度远远不够您试图输入的
BigDecimal

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

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