我的代码是:
x=new BigDecimal(x.toString()+" "+(new BigDecimal(10).pow(1200)).toString());
我试图在将两个bigdecimal转换为字符串后将它们连接起来,然后将它们转换回bigdecimal。我这样做是因为x有一个带小数点的值,并且乘法会改变它的值。它编译得很好,但抛出了一个数字格式执行异常。
我的想法是使用 BigDecimal("String x") 构造函数将字符串转换回 BigDecimal。
注意: (例如) x=1333.212 我正在将其转换为 x=1333.2120000
最佳答案
它无法解析,因为没有特殊原因,其中有一个空格。查看它尝试解析的字符串,您会发现它不是有效的数字。
如果您只是尝试添加额外的尾随零(您的问题非常不清楚),则应该更改比例:
x = x.setScale(x.scale() + 1200);
简单的例子:
BigDecimal x = new BigDecimal("123.45");
x = x.setScale(x.scale() + 5);
System.out.println(x); // 123.4500000
如果您尝试将该值乘以 10 的幂(正如您最初的问题所建议的那样),有一种更更简单的方法可以实现此目的,即使用 movePointRight
:
x = x.movePointRight(1200);
来自文档:
The
BigDecimal
returned by this call has value (this
× 10n) and scalemax(this.scale()-n, 0)
.
关于java - java中BigDecimal到String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25203022/