Java 中的小数格式

Decimal Format in Java

我一直在寻找答案,但我找不到,如果有其他 post 谈论它,对不起,但是我的答案很简单确定,但我看不到,如何格式化小数,如:

 7.9820892389040892803E-05

而且我想格式化该数字以保留 "E" 但将小数点格式化为:

 7.98203E-05

如果有人能给我看灯,我将不胜感激。

您可以使用 DecimalFormat (docs here):

Symbol  Location    Localized?  Meaning
0       Number      Yes         Digit
#       Number      Yes         Digit, zero shows as absent
.       Number      Yes         Decimal separator or monetary decimal separator 
E       Number      Yes         Separates mantissa and exponent in scientific notation.

例如:

DecimalFormat formatter = new DecimalFormat("#.#####E00");
System.out.println(formatter.format(7.9820892389040892803E-05));
System.out.println(formatter.format(7.98E-05));

输出:

7.98209E-05
7.98E-05

请注意,当您使用 # 时,不会打印尾随零。如果你总是想要小数点后五位数字,你应该使用 0:

DecimalFormat formatter = new DecimalFormat("0.00000E00");
System.out.println(formatter.format(7.98E-05));

输出:

7.98000E-05

您可以通过 String Formatting

实现

您需要的格式是 %.5E(= 大写科学记数法的精度 5)

示例:System.out.printf("%.5E", 5/17d); 输出 2.94118E-01

使用 DeciamlFormat 对象...

public static void main(String[] args) {
        double amount = 7.9820892389040892803E-05;
        DecimalFormat df = new DecimalFormat("0.00000E0");
        System.out.println(df.format(amount));
}

结果: