java中的BigDecimal转换为String


我的代码是:
x=new BigDecimal(x.toString()+" "+(new BigDecimal(10).pow(1200)).toString());

我试图将两个bigdecimal转换为字符串后连接它们,然后将它们转换回bigdecimal。我这样做是因为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);

From the docs:

调用返回的BigDecimal值为(this × 10n),尺度为max(this.scale()-n, 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));

最新更新