BigDecimal转换为字符串
我有一个BigDecimal对象,我想将其转换为字符串。问题是我的值得到了分数,我得到了一个很大的数字(长度),例如,我只需要字符串中的原始数字即可:
BigDecimal bd = new BigDecimal(10.0001)System.out.println(bd.toString());
System.out.println(bd.toPlainString());
10.00009999999999976694198267068713903427124023437510.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