【问题标题】:Need help printing just 1 decimal place需要帮助打印小数点后 1 位
【发布时间】:2015-02-15 21:43:30
【问题描述】:

我试图让我的输出只打印到小数点后 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 通过

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

【问题讨论】:

    标签: java decimal decimalformat


    【解决方案1】:

    使用

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

    代替

    df.format()
    

    不需要十进制格式

    【讨论】:

      【解决方案2】:

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

      df.setMinimumFractionDigits(1);
      

      【讨论】:

        【解决方案3】:

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

        那么你的代码 sn-p 的第一行将是:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-02-12
          • 2013-06-17
          • 2017-03-31
          • 1970-01-01
          • 1970-01-01
          • 2020-07-24
          • 2010-12-24
          相关资源
          最近更新 更多