gpt4 book ai didi

Java - 设置要打印的 double 长度时包括小数点和前面的数字吗?

转载 作者:行者123 更新时间:2023-12-01 18:00:32 24 4
gpt4 key购买 nike

我正在打印一个矩阵,每个元素在屏幕上打印的长度相同,以便于阅读。

如果我做类似的事情:

System.out.printf("%.16f", x);

然后我得到不同的长度,具体取决于前面的(整体)值:

x = 1;
x = 2.345;
x = 10;
x = 1243.5678;

给出以下输出:

// 1.0000000000000000
// 2.3450000000000000
// 10.0000000000000000
// 1243.5678000000000000

这使得矩阵变得困惑。如何将整个 double (包括小数和整数)限制为一定长度?因此,对于前面的情况,输出将是:

// 1.0000000000000000
// 2.3450000000000000
// 10.000000000000000
// 1243.5678000000000

编辑#1

我不想只用零填充。前导零不美观并且可能导致误读。即使我现在有 %.16f,我可能会使用较低的精度,并且每个数字都将很重要(且非零)。

最佳答案

有不同的方法来格式化输出(但与您的输出不完全相同):

  1. 使用printf方法(假设21位宽度):

    System.out.printf("%21.16f%n", 1.0);
    System.out.printf("%21.16f%n", 2.345);
    System.out.printf("%21.16f%n", 10.0);
    System.out.printf("%21.16f", 1243.5678);

    =>输出

       1.0000000000000000
       2.3450000000000000
     10.0000000000000000
 1243.5678000000000000

  • 使用 Apache Commons Lang 库。假设您希望小数点后有 16 位数字,小数点前有 5 位数字,则可能会产生以下结果:

    System.out.println(StringUtils.rightPad(String.valueOf(1.0), 21, '0'));
    System.out.println(StringUtils.rightPad(String.valueOf(2.345), 21, '0'));
    System.out.println(StringUtils.rightPad(String.valueOf(10.0), 21, '0'));
    System.out.println(StringUtils.rightPad(String.valueOf(1243.5678), 21, '0'));
  • 输出:

    1.0000000000000000000
    2.3450000000000000000
    10.000000000000000000
    1243.5678000000000000

  • 另一种方法是使用DecimalFormat:

    final String format = "00000.0000000000000000";
    DecimalFormat formatter = new DecimalFormat(format);
    System.out.println(formatter.format(1.0));
    System.out.println(formatter.format(2.345));
    System.out.println(formatter.format(10.0));
    System.out.println(formatter.format(1243.5678));

    和输出:

  • 00001.0000000000000000
    00002.3450000000000000
    00010.0000000000000000
    01243.5678000000000000

    关于Java - 设置要打印的 double 长度时包括小数点和前面的数字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41340566/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com