使用printf方法显示小数位数

时间:2015-02-25 02:49:24

标签: java format printf

我正在使用printf方法制作类似收据的控制台输出。 它列出了项目,价格和数量,然后是总数。

我目前按照我想要的方式排列,尽管它没有显示2位小数。我需要显示完整的数字,例如:" $ 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      $1         $1    
    Soda                           3.00       $1         $3    
    Chips                          20.00      $1         $2    
    Subtotal                                             $4    
    Sales Tax                                            $3    
    Total                                                $4   

如何让它显示完整的值?

2 个答案:

答案 0 :(得分:0)

您正在将价格和总金额打印为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. 美元符号现在位于格式化字符串中。

答案 1 :(得分:0)

您可以在第一个参数中添加该美元符号,因为目前您尝试将String的小数添加为%-10.2s,而不是您可以尝试以下方式。如果您的价格为{{1}你应该通过Integer/String

将其转换为double

例如:

Double.valueOf(gumPrice)