我的代码是:
x=new BigDecimal(x.toString()+" "+(new BigDecimal(10).pow(1200)).toString());
我试图在将它们转换为字符串然后将它们转换回bigdecimal之后连接两个bigdecimals。我这样做是因为x有一个带小数点的值并且乘以将改变它的值。它编译得很好但是抛出一个数字格式执行中的异常。
我的想法是使用BigDecimal(“String x”)构造函数将字符串转换回BigDecimal。
注意: (例如) X = 1333.212 我正在把它转换成 X = 1333.2120000
答案 0 :(得分:5)
它没有解析,因为你在那里有一个空间,没有特别的原因。看看它试图解析的字符串,你会发现它不是一个有效的数字。
如果你只是试图添加额外的尾随零(你的问题很不清楚),你应该改变比例:
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)
。
答案 1 :(得分:0)
你需要以这种方式尝试
BigDecimal result=new
BigDecimal("1333.212123232432543534324243253563453423423242452543535")
.multiply(new BigDecimal("10").pow(1200));
System.out.println(result);
编辑:
BigDecimal result=new
BigDecimal("1333.212123232432543534324243253563453423423242452543535")
.multiply(new BigDecimal("10").pow(1200));
System.out.println(result.movePointRight(-1200));