【问题标题】:How do I align the decimal point when displaying doubles and floats显示双精度和浮点数时如何对齐小数点
【发布时间】:2013-06-01 13:15:47
【问题描述】:

如果我有以下小数点:

Double[] numbers = new Double[] {1.1233, 12.4231414, 0.123, 123.3444, 1.1};
for (Double number : numbers) {
    System.out.println(String.format("%4.3f", number));
}

然后我得到以下输出:

1.123
12.423
0.123
123.344
1.100

我想要的是:

   1.123
  12.423
   0.123
 123.344
   1.100

【问题讨论】:

    标签: java double number-formatting


    【解决方案1】:

    可能有点混乱的部分是String.format("4.3", number)

    4 代表整个数字的长度(包括小数),而不仅仅是小数之前的部分。 3 代表小数位数。

    因此,要获得正确的格式,小数点前最多 4 个数字和 3 个小数位,所需的格式实际上是 String.format("%8.3f", number)

    【讨论】:

      【解决方案2】:

      您可以编写一个在数字前打印空格的函数。

      如果它们都是4.3f,我们可以假设每个数字最多需要8个字符,所以我们可以这样做:

      public static String printDouble(Double number)
      {
        String numberString = String.format("%4.3f", number);
        int empty = 8 - numberString.length();
        String emptyString = new String(new char[empty]).replace('\0', ' ');
      
        return (emptyString + numberString);
      }
      

      输入:

      public static void main(String[] args)
      {
          System.out.println(printDouble(1.123));
          System.out.println(printDouble(12.423));
          System.out.println(printDouble(0.123));
          System.out.println(printDouble(123.344));
          System.out.println(printDouble(1.100));
      }
      

      输出:

      run:
         1,123
        12,423
         0,123
       123,344
         1,100
      BUILD SUCCESSFUL (total time: 0 seconds)
      

      【讨论】:

        【解决方案3】:

        这是另一个简单的方法,user System.out.printf();

        Double[] numbers = new Double[]{1.1233, 12.4231414, 0.123, 123.3444, 1.1};
        
        for (Double number : numbers) {
          System.out.printf("%7.3f\n", number);
        }
        

        【讨论】:

        • 实际上是%8.3f,至少在我的电脑上。
        • 这取决于我认为的输出格式长度,123.344 它的长度约为 7,这是您应该在 printf 格式中保留的最小值。
        • 我认为第一个数字表示要使用的字符总数,但我不确定。
        • 是的,类似的,我也有同样的想法。
        猜你喜欢
        • 1970-01-01
        • 2016-09-22
        • 2018-02-23
        • 2015-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-11
        相关资源
        最近更新 更多