我的代码是:
x=new BigDecimal(x.toString()+" "+(new BigDecimal(10).pow(1200)).toString());
我试图在将两个大十进制转换为字符串然后再将其转换回大十进制后这样做,因为x具有一个带小数点的值,并且乘以会改变其值。它编译良好,但在执行时抛出numberformat异常。
我的想法是使用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);
从文档中:
在
BigDecimal
此调用返回的值为(this
×10N)和规模max(this.scale()-n, 0)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句