Java 将int转换为字符串时对齐十进制

Java 将int转换为字符串时对齐十进制,java,string,alignment,int,decimal,Java,String,Alignment,Int,Decimal,我知道在Java中可以使用printf,比如 System.out.printf("check1 = " + "%11.5f percent\n", 2.0564); System.out.printf("cat = " + "%11.5f percent\n", 1232.05); 但是如果你说你有 int temp1 = 1.02 int temp2 = 12345.01234 您希望将其转换为十进制对齐的字符串。所以你会有 a = "DMC 1.02 p

我知道在Java中可以使用printf,比如

System.out.printf("check1 =  " + "%11.5f  percent\n", 2.0564);
System.out.printf("cat =     " + "%11.5f  percent\n", 1232.05);
但是如果你说你有

int temp1 = 1.02
int temp2 = 12345.01234
您希望将其转换为十进制对齐的字符串。所以你会有

a = "DMC       1.02    percent"
b = "POLY  12345.01234 percent"
除了用一堆if语句来检查长度外,还有什么方法可以做到这一点吗?

使用:

String.format("%-15s%11.5f percent", "DMC", 1.02);
String.format("%-15s%11.5f percent", "POLY", 12345.01234);
它产生:

DMC           1.02000 percent
POLY      12345.01234 percent

您可能需要增加
%-15s的值,以正确匹配非常大的数字。

您可以使用字符串操作

String text = "     " + value + "     ";
text = text.substring(text.indexOf('.') - 5, text.indexOf('.') + 5);

您应该能够使用@Peter来完成类似的操作(用零而不是空格填充)。@Peter——对齐小数点的重要部分是11.5f。您在那里所做的是允许一些最大长度11(包括小数点)。用5个小数是正确的,所以他们总是排成一行。所以Elias所说的有点误导性,因为对于非常大的数字,你不需要增加15,但是对于非常大的数字,你需要增加11。15是DMC/POLY的填充物