【问题标题】:Aligning Decimal when convert int to string将int转换为字符串时对齐小数
【发布时间】:2012-08-10 15:58:20
【问题描述】:

我知道在 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 语句来检查长度之外,还有其他方法吗?

【问题讨论】:

  • 您应该能够使用DecimalFormat 做一些接近此的事情(用零而不是空格填充)。

标签: java string alignment int decimal


【解决方案1】:

用途:

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 的值以正确拟合非常大的数字。

【讨论】:

  • @Peter -- 对齐小数点的重要部分是 11.5f。您在那里所做的是允许最大长度为 11(包括小数点)。 5 位小数是正确的,所以它们总是排成一行。
  • 所以埃利亚斯所说的有点误导,因为你不需要为非常大的数字增加 15,而是你需要为非常大的数字增加 11。 15 是 DMC/POLY 的填充
【解决方案2】:

您可以使用字符串操作。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2011-03-06
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    相关资源
    最近更新 更多