【问题标题】:Is there a way to format decimal point numbers while using PrintWriter, without using "Format" function in Java?有没有办法在使用 PrintWriter 时格式化小数点数字,而不使用 Java 中的“格式”功能?
【发布时间】:2014-11-20 10:36:26
【问题描述】:

我正在将数据写入文件以进行 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 中的“格式”函数来格式化小数点数字?

【问题讨论】:

    标签: java formatting format filewriter printwriter


    【解决方案1】:

    可以用单一格式写一行

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

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

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

    【讨论】:

    • 完美,谢谢,如果我有第三组数据,我只需将其更改为“%.3f %.1f %.1f%n”?
    • 正确答案,但它缺少问题中的制表符\t
    • @neo-su:是的,您可以根据需要添加更多数据。您使用格式字符串来控制您希望如何格式化数据
    • 如果您不介意,还有一个问题,在打印完所有数字后如何打印空白行。我知道我可以通过说 out.print("\n") 打印一个空行,但这会在每一行之间打印空行。
    • 添加行 out.print("\n");打印完所有数据后
    【解决方案2】:

    来自the doc

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

    只需从 format 参数中删除 %n

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

    所以你可以写:

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

    或者更简单:

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

    IdeOne 上看到这个运行。

    【讨论】:

    • 没有帮助,然后我在文件中的数据最终看起来像这样: -1.075 0.0-1.092 0.0-1.075 ,它按行而不是按列打印
    • 为清楚起见编辑了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多