为什么 BigDecimal 的值与构造函数中提供给它的值不匹配?
Why does the value of BigDecimal not match the value supplied to it in the constructor?
我在 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");
// ^ ^
我在 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");
// ^ ^