Java 新的 BigDecimal 生成另一个数字



当我设置

new BigDecimal(21.30);

然后,我将其作为 xml 源返回,它显示为

21.30000000000710522735760100185871124467578125

另一个数字

new BigDecimal(23.11)

返回

23.1099999994315658113818187512921995859375

我想显示与创建时设置的相同小数的结果。

此构造函数的结果可能有些不可预测。一 可能假设在 Java 中编写new BigDecimal(0.1)创建 一个正好等于 0.1 的BigDecimal(未缩放的值为 1,小数位数为 1),但实际上等于

0.100000000000000000055511151231257827021181583404541015625。这是因为 0.1 不能完全表示为double(或者,就此而言,表示为任何有限长度的二进制分数)。 因此,传递给构造函数的值不完全等于 0.1, 尽管有外表。

如果您查看 BigDecimal java 文档,您会发现您必须使用构造函数,该构造函数采用String参数才能最终获得所需的行为。

相关内容

最新更新