在使用PrintWriter时,是否有方法格式化小数点,而不使用;格式";Java中的函数?

在使用PrintWriter时,是否有方法格式化小数点,而不使用;格式";Java中的函数?,java,formatting,format,filewriter,printwriter,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");

我正在将数据写入一个文件,以便进行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.075
      0.0
-1.092
      0.0
-1.075
      0.0
这会打印出如下数据:

  -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);
但是我不想在我的代码中使用它,因为当我写入文件时,列看起来没有方向,我的文件数据看起来像这样:

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.075
      0.0
-1.092
      0.0
-1.075
      0.0
格式化时还有什么我需要知道的吗?或者,在java中使用“format”函数是否有其他方法格式化小数点

来自:

%n是独立于平台的换行符

只需从
格式
参数中删除
%n

out.format("%.3f",DecimalPointData); 
所以你可以写:

out.format("%.3f", DecimalPointData);
out.print("\t");
out.println(OtherData);
或更简单:

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

请参阅上的运行说明。

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

out.format("%.3f %.1f%n",DecimalPointData, OtherData); 
编辑: 如果要在输出中添加选项卡,请使用以下格式字符串

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

如果没有帮助,那么我在文件中的数据最终看起来是这样的:-1.075 0.0-1.092 0.0-1.075,它会按行打印,而不是按列编辑我的答案,以保持清晰。工作完美谢谢,如果我有第三组数据,我只会将其更改为“%.3f%.1f%.1f%n”?正确答案,但是它缺少问题中的制表符
\t
。@neo su:是的,您可以根据需要添加更多数据。您可以使用格式字符串来控制数据的格式。如果您不介意的话,还有一个问题,在打印完所有数字后,如何打印空行。我知道我只需说出out.print(“\n”)就可以打印空行,但这会在每行之间打印空行。添加out.print(“\n”);打印完所有数据后