如何在 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));
}
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));
}