我的代码是:
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
它没有解析,因为你在那里有一个空间没有特别的原因.看看它试图解析的字符串,你会发现它不是一个有效的数字.
如果你只是想添加额外的尾随零(你的问题很不清楚),你应该改变比例:
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).
| 归档时间: |
|
| 查看次数: |
1128 次 |
| 最近记录: |