舍入BigDecimal的科学记数法

时间:2013-07-12 08:40:08

标签: java bigdecimal

我想用科学记数法打印BigDecimal,以便在小数点后面有5位数字。例如:-3.12345E-519.12345E100

.setScale()在这种情况下不起作用,因为我事先并不知道科学记数法中数字的指数。此外,BigDecimal似乎没有getExponent()方法。

实现这一目标的最佳方法是什么?提前谢谢。

1 个答案:

答案 0 :(得分:5)

您应该使用DecimalFormat以指定格式打印数字:

    BigDecimal bigDecimal = new BigDecimal(-3.12345E-51);
    DecimalFormat format = new DecimalFormat("0.#####E0");
    System.out.println(format.format(bigDecimal));

您还可以使用方法DecimalFormat#setMaximumFractionDigits(int)配置小数位数:

    DecimalFormat format = new DecimalFormat("0E0");
    format.setMaximumFractionDigits(6);