需要帮助打印只需1位小数

时间:2015-02-15 21:43:30

标签: java decimal decimalformat

我试图让我的输出打印到只有小数点后1位。我已尝试使用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 Pass

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

3 个答案:

答案 0 :(得分:0)

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

df.setMinimumFractionDigits(1);

答案 1 :(得分:0)

使用

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

而不是

df.format()

不需要DecimalFormat

答案 2 :(得分:0)

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

然后,您的代码段的第一行将是:

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