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



类分配:编写一个方法来计算棒球运动员的平均击球数。我需要输出为 .345,但我不断得到 0.345。如何格式化此输出,以便在小数点前不显示前导零?感谢您提供的任何帮助。

这是我的棒球运动员类中的代码:

//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) );
}

这是我主类中的代码:

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());

另一方面,我相信你忘记了为你的棒球运动员设置双打......所以它将始终为 0。

这里有一种方法可以做到这一点。

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

相关内容

  • 没有找到相关文章

最新更新