我试图让我的输出打印到只有小数点后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 );
答案 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");