用printf格式化Java格式; '$'不随着数字而移动

时间:2012-07-24 09:10:41

标签: java formatting printf

想知道如何放置'$'符号,以便在我执行此操作时随着数字移动:

    System.out.printf("$%20.2f", test);

我得到了

$               10.00

我正在尝试将一系列数据格式化为3列

我已经尝试将%放在C之后,但它不起作用。

2 个答案:

答案 0 :(得分:2)

没有快捷方式可以将文本添加到要格式化的变量中 您必须分两步完成此操作,如下所示:

System.out.printf("%20s", String.format("$%.2f", test));

答案 1 :(得分:0)

这可能有点像kludge,但我通常只为此设置一个十进制格式化程序:

import java.text.DecimalFormat;
class Test {
    public static void main(String[] args) {
        // One-time setup (could be simpler, I've opted for readability).
        final String fmt20v2a = "$#################.00";
        final String fmt20v2b = "%21s";
        final DecimalFormat df20v2 = new DecimalFormat (fmt20v2a);

        // Usage
        System.out.printf(fmt20v2b + "\n", df20v2.format(74.1));
        System.out.printf(fmt20v2b + "\n", df20v2.format(999999.99));

} }

这为您提供了一些额外工作的对齐输出,但设置通常只需要完成一次。输出是:

              $74.10
          $999999.99