将printf用于多种类型的修饰符

时间:2018-01-25 22:00:10

标签: java

我想打印一个小数点后只有2位数的数字,并打印一个带有数字固定点的语句。我尝试这样做的方法是输入:

System.out.printf("You can take a trip. %s money left.",money);

但我不知道在哪里放置另一个修饰符是"%。2f"。 我试过了:

System.out.printf("%.2f","You can take a trip. %s money left.",money);

但它不起作用。非常感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

此格式的输出会将您的货币值放在15个空格的字段中,并保留两位小数,因此该数字会有一个固定的点:

System.out.printf("You can take a trip. %15.2f money left.", money);

答案 1 :(得分:0)

System.out.printf("You can take a trip. %.2f money left.", money);

%s格式说明符将相应的值格式化为字符串;由于您尝试打​​印浮点值,因此需要使用%f.2元素指定应打印小数点后的位数。

来源:

答案 2 :(得分:0)

如果需要将两个不同的浮点值传递给System.out.printf(),则可以将这两个值作为该方法的参数传递(但使用%f代替%s,因为%s用于字符串而不用于浮点:

float firstMoney = 1000.0f;
float secondMoney = 5.0f;
System.out.printf("%.2f. You can take a trip. %.2f money left.", firstMoney, secondMoney);

你得到的输出:

1000,00. You can take a trip. 5,00 money left.

如果这两个值的源都是同一个变量,你可以稍微更改一下代码,让System.out.printf()知道,你想要将同一个参数传递给两个格式说明符(你需要使用{ {1}}承认,对于你想要使用列表中的第一个参数(如果你不这样做,方法,默认情况下查找列表中的第二个参数,这是不存在的。例如:

1$

输出:

float firstMoney = 1000.0f;
System.out.printf("%1$.2f. You can take a trip. %1$.2f money left.", firstMoney, secondMoney);

您还可以替换传递给该方法的值的顺序:

1000,00. You can take a trip. 1000,00 money left.

输出:

float firstMoney = 1000.0f;
float secondMoney = 5.0f;
System.out.printf("%2$.2f. You can take a trip. %1$.2f money left.", firstMoney, secondMoney);

有关其他信息,如何使用格式说明符,您可能需要查看此处: https://docs.oracle.com/javase/tutorial/essential/io/formatting.html