java中的BigDecimal到String?

时间:2014-08-08 11:58:43

标签: java bigdecimal

我的代码是:

x=new BigDecimal(x.toString()+" "+(new BigDecimal(10).pow(1200)).toString());

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

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

注意: (例如) X = 1333.212 我正在把它转换成 X = 1333.2120000

2 个答案:

答案 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));