java中的BigDecimal到String?

use*_*360 0 java bigdecimal

我的代码是:

x=new BigDecimal(x.toString()+" "+(new BigDecimal(10).pow(1200)).toString());
Run Code Online (Sandbox Code Playgroud)

我试图在将它们转换为字符串之后将两个bigdecimals连接起来然后将它们转换回bigdecimal.我这样做是因为x有一个带小数点的值并且乘法将改变它的值.它编译得很好但在执行时抛出一个数字格式的异常.

我的想法是使用BigDecimal("String x")构造函数将字符串转换回BigDecimal.

注意:(例如)x = 1333.212,我将其转换为x = 1333.2120000

Jon*_*eet 5

它没有解析,因为你在那里有一个空间没有特别的原因.看看它试图解析的字符串,你会发现它不是一个有效的数字.

如果你只是想添加额外的尾随零(你的问题很不清楚),你应该改变比例:

x = x.setScale(x.scale() + 1200);
Run Code Online (Sandbox Code Playgroud)

简单的例子:

BigDecimal x = new BigDecimal("123.45");
x = x.setScale(x.scale() + 5);
System.out.println(x); // 123.4500000
Run Code Online (Sandbox Code Playgroud)

如果你试图将该值乘以10的幂(如您提出的初始问题),那么使用以下方法可以更加简单movePointRight:

x = x.movePointRight(1200);
Run Code Online (Sandbox Code Playgroud)

来自文档:

BigDecimal此调用返回的值为(this×10N)和规模max(this.scale()-n, 0).