有没有办法在使用PrintWriter时格式化小数点数,而不使用Java中的“格式”功能?

时间:2014-11-20 10:36:27

标签: java formatting format filewriter printwriter

我正在将数据写入我的Java模拟文件。我的代码如下所示:

try (PrintWriter out = new PrintWriter(new FileWriter("data/test.dat", true));)
      {
        out.print(DecimalPointData);
        out.print("\t");
        out.print(OtherData);
        out.print("\n");            
        } catch (IOException {
            e.printStackTrace();
        }

打印出如下数据:

  -1.0749999955296516   0.0
  -1.0919999964535236   0.0
  -1.0749999955296516   0.0
  -0.5339999794960022   0.0

我知道java中的数据可以使用.format格式化,即如果我可以说

out.format("%.3f%n",DecimalPointData); 

而不是

out.print(DecimalPointData);

但我不想在我的代码中使用它,因为当我写入文件时,列看起来迷失方向,我的文件数据最终看起来像这样:

-1.075
      0.0
-1.092
      0.0
-1.075
      0.0

格式化时我还需要知道其他什么吗?或者是否有另一种使用"格式"格式化小数点数的方法java中的函数?

2 个答案:

答案 0 :(得分:1)

您可以使用单一格式编写一行

out.format("%.3f %.1f%n",DecimalPointData, OtherData); 

编辑: 如果要在输出中添加TAB,请使用以下格式字符串

out.format("%.3f\t%.1f%n",DecimalPointData, OtherData); 

答案 1 :(得分:0)

来自the doc

  

%n是与平台无关的换行符。

只需从%n参数中删除format

out.format("%.3f",DecimalPointData); 

所以你可以写:

out.format("%.3f", DecimalPointData);
out.print("\t");
out.println(OtherData);

或更简单:

out.format("%.3f\t%.1f%n", DecimalPointData, OtherData);

IdeOne上查看此内容。