如果我有以下小数点数:
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
答案 0 :(得分:10)
可能有点混乱的部分是String.format("4.3", number)
4
表示整个数字的长度(包括小数),而不仅仅是小数点前的部分。 3
表示小数位数。
因此,为了使格式正确,在十进制之前最多4个数字和3个小数位,所需格式实际为String.format("%8.3f", number)
。
答案 1 :(得分: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)
答案 2 :(得分:2)
这是另一个简单的方法,用户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);
}