使用 printf 方法显示小数位
Displaying Decimal places using printf method
我正在使用 printf 方法制作类似收据的控制台输出。
它列出了项目、它们的价格和数量,然后是总数。
我目前已经按照我想要的方式排列了所有内容,尽管它没有显示小数点后两位。我需要显示完整的数字,例如:“$1.00”,目前显示的是“$1”。
这就是我的
System.out.printf("%-30s %-10s %-10s %-5s", "Item","Quantity","Price","Total\n");
System.out.printf("%-30s %-10.2f %-10.2s %-5.2s %s", "Gum",gumQuantity,"$"+gumPrice,"$"+gumTotal,"\n");
System.out.printf("%-30s %-10.2f %-10.2s %-5.2s %s", "Soda",sodaQuantity,"$"+sodaPrice,"$"+sodaTotal,"\n");
System.out.printf("%-30s %-10.2f %-10.2s %-5.2s %s", "Chips",chipsQuantity,"$"+chipsPrice,"$"+chipsTotal,"\n");
System.out.printf("%-52s %-5.2s %s", "Subtotal", "$"+subTotal,"\n");
System.out.printf("%-52s %-5.2s %s", "Sales Tax", "$"+salesTax,"\n");
System.out.printf("%-52s %-5.2s %s", "Total", "$"+totalFinal,"\n");
输出看起来像这样
Item Quantity Price Total
Gum 10.00
Soda 3.00
Chips 20.00
Subtotal
Sales Tax
Total
我怎样才能让它显示完整的值?
您将价格和总计打印为 String
,您可以替换:
System.out.printf("%-30s %-10.2f %-10.2s %-5.2s %s", "Gum",gumQuantity,"$"+gumPrice,"$"+gumTotal,"\n");
类似:
System.out.printf("%-30s %-10.2f $%-10.2f $%-5.2f %n", "Gum", gumQuantity, gumPrice, gumTotal);
注:
gumQuantity
、gumPrice
和gumTotal
应该是double
或float
类型,否则你应该将它们转换为相应的类型并传递它们printf
方法。
- 美元符号现在位于格式化字符串中。
您可以在您的第一个参数中添加美元符号,因为目前您正在尝试将 String
的小数添加为 %-10.2s
而不是这个您可以尝试按照 way.If 您的价格是Integer/String
而不是你应该通过 Double.valueOf(gumPrice)
将其转换为 double
例如:
System.out.printf("$%-10.2f",12.7);//Pass double/float istead of String
^
price
我正在使用 printf 方法制作类似收据的控制台输出。 它列出了项目、它们的价格和数量,然后是总数。
我目前已经按照我想要的方式排列了所有内容,尽管它没有显示小数点后两位。我需要显示完整的数字,例如:“$1.00”,目前显示的是“$1”。
这就是我的
System.out.printf("%-30s %-10s %-10s %-5s", "Item","Quantity","Price","Total\n");
System.out.printf("%-30s %-10.2f %-10.2s %-5.2s %s", "Gum",gumQuantity,"$"+gumPrice,"$"+gumTotal,"\n");
System.out.printf("%-30s %-10.2f %-10.2s %-5.2s %s", "Soda",sodaQuantity,"$"+sodaPrice,"$"+sodaTotal,"\n");
System.out.printf("%-30s %-10.2f %-10.2s %-5.2s %s", "Chips",chipsQuantity,"$"+chipsPrice,"$"+chipsTotal,"\n");
System.out.printf("%-52s %-5.2s %s", "Subtotal", "$"+subTotal,"\n");
System.out.printf("%-52s %-5.2s %s", "Sales Tax", "$"+salesTax,"\n");
System.out.printf("%-52s %-5.2s %s", "Total", "$"+totalFinal,"\n");
输出看起来像这样
Item Quantity Price Total
Gum 10.00
Soda 3.00
Chips 20.00
Subtotal
Sales Tax
Total
我怎样才能让它显示完整的值?
您将价格和总计打印为 String
,您可以替换:
System.out.printf("%-30s %-10.2f %-10.2s %-5.2s %s", "Gum",gumQuantity,"$"+gumPrice,"$"+gumTotal,"\n");
类似:
System.out.printf("%-30s %-10.2f $%-10.2f $%-5.2f %n", "Gum", gumQuantity, gumPrice, gumTotal);
注:
gumQuantity
、gumPrice
和gumTotal
应该是double
或float
类型,否则你应该将它们转换为相应的类型并传递它们printf
方法。- 美元符号现在位于格式化字符串中。
您可以在您的第一个参数中添加美元符号,因为目前您正在尝试将 String
的小数添加为 %-10.2s
而不是这个您可以尝试按照 way.If 您的价格是Integer/String
而不是你应该通过 Double.valueOf(gumPrice)
double
例如:
System.out.printf("$%-10.2f",12.7);//Pass double/float istead of String
^
price