如何在 Java 中显示小数点前没有前导零的双精度数

How to display a double with no leading zero before the decimal in Java

Class 作业:编写一个方法来计算棒球运动员的安打率。我需要输出为 .345,但我一直得到 0.345。如何格式化此输出以便不显示小数位前的前导零?感谢您提供的任何帮助。

这是我的 BaseballPlayer class 中的代码:

//BaseballPlayer parameters

String name;
int number;
int singles;
int doubles;
int triples;
int homeRuns;
int atBats;
int walks;
int sacrificeFlies;

//DecimalFormat

static DecimalFormat df  =   new DecimalFormat(".000");

//BaseballPlayer constructor method

public BaseballPlayer(String name, int number, int singles, int triples, int homeRuns, int atBats, int walks, 
        int sacrificeFlies)
{
    this.name            =   name;
    this.number          =   number;
    this.singles         =   singles;
    this.triples         =   triples;
    this.homeRuns        =   homeRuns;
    this.atBats          =   atBats;
    this.walks           =   walks;
    this.sacrificeFlies  =   sacrificeFlies;
}

public double getBattingAverage()
{
     return Double.parseDouble(df.format( (double) ( singles + doubles + triples + homeRuns ) / atBats) );
}

这是我主要的代码 class:

BaseballPlayer player01  =   new BaseballPlayer( "Mr. Business",13,12,13,4,84,63,7);

    System.out.println(player01.getBattingAverage());

我的输出:

运行:

0.345

构建成功(总时间:0 秒)

您忘记格式化实际输出 - 您正在格式化进入 Double.parseDouble() 函数的值,而不是 getBattingAverage() 函数的实际结果,因此 System.out.println() 输出不是您所期望的。您的主要方法应如下所示:

public static void main(String[] args) {
    BaseballPlayer player01  =   new BaseballPlayer ( "Mr. Business",13,12,13,4,84,63,7);
    String str = df.format(player01.getBattingAverage());
    System.out.println(str);
}

如果要格式化实际的 getBattingAverage() 输出,您需要执行以下操作:

public String getBattingAverage() {
    Double average = Double.parseDouble(df.format( (double) ( singles + doubles + triples + homeRuns ) / atBats) );
    return df.format(average);
}

然后你的主要方法是这样的:

Main player01  =   new Main( "Mr. Business",13,12, 13,4,84,63,7);
System.out.println(player01.getBattingAverage());

顺便提一句,我相信你忘记了为你的 BaseballPlayer 设置双打...所以它永远是 0。

这是一种方法。

      double[] vals = { 0.233, .229, .292
      };
      for (double v : vals) {
         System.out.println(String.format("%.3f", v).substring(1));
      }