Java 四舍五入大十进制的科学记数法

Java 四舍五入大十进制的科学记数法,java,bigdecimal,Java,Bigdecimal,我想用科学记数法打印一个BigDecimal,这样小数点后就有5位数字了。例如:-3.12345E-51,9.12345E100 .setScale()在这种情况下不起作用,因为我事先不知道科学记数法中的数字指数。此外,BigDecimal似乎没有getExponent()方法 实现这一目标的最佳方式是什么?提前感谢。您应该使用以下命令以指定格式打印数字: BigDecimal bigDecimal = new BigDecimal(-3.12345E-51); DecimalF

我想用科学记数法打印一个
BigDecimal
,这样小数点后就有5位数字了。例如:
-3.12345E-51
9.12345E100

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

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

您应该使用以下命令以指定格式打印数字:

    BigDecimal bigDecimal = new BigDecimal(-3.12345E-51);
    DecimalFormat format = new DecimalFormat("0.#####E0");
    System.out.println(format.format(bigDecimal));
您还可以使用以下方法配置分数位数的计数:

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

    BigDecimal bigDecimal = new BigDecimal(-3.12345E-51);
    DecimalFormat format = new DecimalFormat("0.#####E0");
    System.out.println(format.format(bigDecimal));
您还可以使用以下方法配置分数位数的计数:


非常好,谢谢!一个稍微相关的问题:如果我想让“#”出现N次,其中N是一个变量,是否有一个快捷方式来表达这一点,或者我必须在字符串中附加“#”N次循环?@blf我已经修改了答案。非常好,谢谢!一个稍微相关的问题:如果我想让“#”出现N次,其中N是一个变量,是否有一个快捷方式来表达这一点,或者我必须在字符串中附加“#”N次循环?@blf我已经修改了答案。