Java 将int转换为字符串时对齐十进制
我知道在Java中可以使用printf,比如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
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的填充物