需要帮助打印小数点后一位

Need help printing just 1 decimal place

我试图让我的输出打印成只有 1 位小数 place.I我试过使用 DecimalFormat 但它弄乱了我的输出对齐方式。 这是我在使用 DecimalFormat:

之前的输出

ID 计划期中最终加权平均值

-- ------ ------ ----- ------ ------

1212 90.0 85.0 92.0 89.30000000000001 通过

6666 60.0 80.0 90.0 78.0 通过

7777 90.0 90.0 90.0 90.0 通过

8888 95.0 87.0 93.0 91.8 通过

9999 75.0 77.0 73.0 74.8 通过

这是我使用 DecimalFormat 后的样子:

ID 项目期中最终加权平均项目成绩

-- ------ ------ ------ -------------- ------ ------

1212 90.0 85.0 92.0 89.3 通过

6666 60.0 80.0 90.0 78 通过

7777 90.0 90.0 90.0 90 通过

8888 95.0 87.0 93.0 91.8 通过

9999 75.0 77.0 73.0 74.8 通过

这是我正在使用的代码:

DecimalFormat df = new DecimalFormat("#.#");
double Program = inputFile.nextDouble(); //Programs
double Midterm = inputFile.nextDouble(); //Midterm
double Final = inputFile.nextDouble(); //Final
double WAverage = (Program * WProgram) + (Midterm * WMidterm)+ 
(Final * WFinal);
classAve = classAve +WAverage;
NumStudents++;
String ResultsString = new String(" Fail");
if (WAverage >= 70)
ResultsString = " Pass";
System.out.println(ID +"   " + Program +"     "+ Midterm +"    "+ Final +
"             "+ df.format(WAverage) +"           " +ResultsString );

您必须设置最小小数位数:

df.setMinimumFractionDigits(1);

使用

String.format("%.1f", WAverage);

而不是

df.format()

不需要 DecimalFormat

您可以通过更改一个字符来完成您想要的:如果您希望始终显示一位小数,即使该数字为零,请在您的格式字符串中使用 .0 而不是 .#。这是文档:http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html

那么您的代码片段的第一行将是:

DecimalFormat df = new DecimalFormat("#.0");