Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 显示双精度和浮点时,如何对齐小数点_Java_Double_Number Formatting - Fatal编程技术网

Java 显示双精度和浮点时,如何对齐小数点

Java 显示双精度和浮点时,如何对齐小数点,java,double,number-formatting,Java,Double,Number Formatting,如果我有以下小数点: 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

如果我有以下小数点:

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

有点令人困惑的是
String.format(“4.3”,数字)

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


因此,要使格式正确,小数点前最多有4个数字,小数点后有3位,所需的格式实际上是
String.format(“%8.3f”,number)
您可以编写一个函数,打印数字前的空格

如果它们都是
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)

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


它实际上是
%8.3f
,至少在我的电脑上是这样。它取决于输出格式的长度,我想,
123.344
它的长度大约是7,这是你在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);
}