当我设置
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
参数才能最终获得所需的行为。