DecimalFormat没有在Java中提供适当的输出

时间:2017-02-23 00:32:37

标签: java

我正在学习Java,并且已经学习了有关不同Java实用程序和数字格式的教学部分。但是,我的格式不像他们在书中所说的那样工作。我的代码如下所示:

import java.text.NumberFormat;
import java.text.DecimalFormat;

public class Lessons {

public static void main(String[] args) {

    double d = 7.1348759272948202842847;

    System.out.printf("%15e %n", d);

    NumberFormat cashFormat = NumberFormat.getCurrencyInstance();

    System.out.println(cashFormat.format(d));

    double e = 14.9;
    double f = 16.09805938020001;
    double g = 12346;

    DecimalFormat Dec_Format = new DecimalFormat("##0.##E0");

    System.out.println(Dec_Format.format(e));
    System.out.println(Dec_Format.format(f));
    System.out.println(Dec_Format.format(g));
}

在书中的例子中,它表示用“## 0。## E0”格式化的12345是“12.3E3”。我收到的输出是“12.345E3”。

我收到的输出很有意义,但由于它与本书不符,我不确定书中是否有错误,或者我做错了什么。

这是正常输出吗?

1 个答案:

答案 0 :(得分:0)

您用于打印12.3E3的格式不正确,而是:

DecimalFormat Dec_Format = new DecimalFormat("##0.##E0");

你应该使用:

DecimalFormat Dec_Format = new DecimalFormat("##0.E0");

这将告诉你:

   7,134876e+00 
7,13 €
14,9E0
16,1E0
12,3E3//<-----------------