使用printf的Java格式化宽度'$';不随数字移动
不知道如何放置“$”符号,以便在执行此操作时它随数字移动:使用printf的Java格式化宽度'$';不随数字移动,java,formatting,printf,Java,Formatting,Printf,不知道如何放置“$”符号,以便在执行此操作时它随数字移动: System.out.printf("$%20.2f", test); 我明白了 我正在尝试将一系列数据格式化为3列 我曾尝试将$放在C中的%后面,但它不起作用。没有向要格式化的变量添加文本的快捷方式。 您必须分两步执行此操作,如下所示: System.out.printf("%20s", String.format("$%.2f", test)); 这可能有点混乱,但我通常只是为此设置了一个十进制格式化程序: import
System.out.printf("$%20.2f", test);
我明白了
我正在尝试将一系列数据格式化为3列
我曾尝试将$放在C中的%后面,但它不起作用。没有向要格式化的变量添加文本的快捷方式。
您必须分两步执行此操作,如下所示:
System.out.printf("%20s", String.format("$%.2f", test));
这可能有点混乱,但我通常只是为此设置了一个十进制格式化程序:
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
在我发布这篇文章之前的谷歌搜索中,我确实遇到了这个答案,但我不愿意使用它,因为我们还没有学会它。但不是说这是一个错误的方式,只是可能不会得到分数。谢谢凯皮尔。这个答案更恰当,更接近我们所学到的
$74.10
$999999.99