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
