Java新的BigDecimal生成另一个数字

Java新的BigDecimal生成另一个数字,java,bigdecimal,Java,Bigdecimal,当我设置 new BigDecimal(21.30); 然后,我将其作为xml源返回,它显示为 21.30000000000710522735760100185871124467578125 另一个号码 new BigDecimal(23.11) 返回 23.1099999994315658113818187512921995859375 我希望显示与我在create上设置的小数相同的结果 此构造函数的结果可能有些不可预测。一个 可能假设在Java中编写新的BigDecimal(0.1)

当我设置

new BigDecimal(21.30);
然后,我将其作为xml源返回,它显示为

21.30000000000710522735760100185871124467578125
另一个号码

new BigDecimal(23.11)
返回

23.1099999994315658113818187512921995859375
我希望显示与我在create上设置的小数相同的结果

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

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


如果您查看BigDecimal java文档,您会发现必须使用构造函数,该构造函数采用
字符串
参数,以实现所需的行为。

您可以提供创建XML的代码,格式为a吗?您是否尝试过
新的BigDecimal(“21.30”)
新的大十进制(“23.11”)只需添加
新的BigDecimal(“23.11”)
就好了。使用backticks`在其他文本中引用代码。代码块使用4个空格的缩进。上面引用的文本取自。