BigDecimal转换为字符串

我有一个BigDecimal对象,我想将其转换为字符串。问题是我的值得到了分数,我得到了一个很大的数字(长度),例如,我只需要字符串中的原始数字即可:

BigDecimal bd = new BigDecimal(10.0001)

System.out.println(bd.toString());

System.out.println(bd.toPlainString());

10.000099999999999766941982670687139034271240234375

10.000099999999999766941982670687139034271240234375

我需要把输出准确地10.0001放在字符串中

回答:

要获得准确的结果,10.0001您需要使用String构造函数或valueOf(它基于double的规范表示构造一个BigDecimal):

BigDecimal bd = new BigDecimal("10.0001");

System.out.println(bd.toString()); // prints 10.0001

//or alternatively

BigDecimal bd = BigDecimal.valueOf(10.0001);

System.out.println(bd.toString()); // prints 10.0001

问题new BigDecimal(10.0001)在于参数是a

double,并且恰巧双精度不能10.0001正确表示。因此10.0001,“转换”为最接近的可能的两倍,这就是10.000099999999999766941982670687139034271240234375您所BigDecimal显示的。

因此,使用double构造函数几乎没有意义。

您可以在此处了解更多信息,将小数点后移两位

以上是 BigDecimal转换为字符串 的全部内容, 来源链接: utcz.com/qa/432307.html

回到顶部