使用 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);

注:

  1. gumQuantitygumPricegumTotal应该是doublefloat类型,否则你应该将它们转换为相应的类型并传递它们printf 方法。
  2. 美元符号现在位于格式化字符串中。

您可以在您的第一个参数中添加美元符号,因为目前您正在尝试将 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