title: Formatting perfectly with printf in Java
body: <p>I'm trying to make my program print out a bill of three items with their names quantities and prices. Everything works fine, all I need is how to formate the prices and totals in order to make all the decimals line up everytime, no matter how big the number. Here's my code</p>
  
  <pre><code>    import java.util.Scanner;
      class AssignmentOneTest {
  
  public static void main(String[] args)
  {
      Scanner kb = new Scanner(System.in);
  
      //       System.out.printf("$%4.2f for each %s ", price, item);
      //       System.out.printf("\nThe total is: $%4.2f ", total);
  
      //process for item one
      System.out.println("Please enter in your first item");
      String item = kb.nextLine();
      System.out.println("Please enter the quantity for this item");
      int quantity = Integer.parseInt(kb.nextLine());
      System.out.println("Please enter in the price of your item");
      double price = Double.parseDouble(kb.nextLine());
  
  
  
  
      //process for item two
      System.out.println("Please enter in your second item");
      String item2 = kb.nextLine();
      System.out.println("Please enter the quantity for this item");
      int quantity2 = Integer.parseInt(kb.nextLine());
      System.out.print("Please enter in the price of your item");
      double price2 =Double.parseDouble(kb.nextLine());
      double total2 = quantity2*price2;
      //       System.out.printf("$%4.2f for each %s ", price2, item2);
      //       System.out.printf("\nThe total is: $%4.2f ", total2);
  
      //process for item three
      System.out.println("Please enter in your third item");
      String item3 = kb.nextLine();
      System.out.println("Please enter the quantity for this item");
      int quantity3 = Integer.parseInt(kb.nextLine());
      System.out.println("Please enter in the price of your item");
      double price3 = Double.parseDouble(kb.nextLine());
      double total3 = quantity3*price3;
      //       System.out.printf("$%4.2f for each %s ", price3, item3);
      //       System.out.printf("\nThe total is: $%4.2f ", total3);
  
  
      double total = quantity*price;
  
      double grandTotal = total + total2 + total3;
      double salesTax = grandTotal*(.0625);
      double grandTotalTaxed = grandTotal + salesTax;
  
  
      String amount = "Quantity";
      String amount1 = "Price";
      String amount2 = "Total";
      String taxSign = "%";
  
      System.out.printf("\nYour bill: ");
      System.out.printf("\n\nItem");
      System.out.printf("%28s %11s %11s", "Quantity", "Price", "Total");
  
      //complete item one format
      System.out.printf("\n%-30s", item);
      System.out.printf("%-10d", (int)quantity);
      System.out.printf("%-10.2f", (float)price);
      System.out.printf("  " + "%-10.2f", (float)total);
  
      //complete item two format
      System.out.printf("\n%-30s", item2);
      System.out.printf("%-10d", (int)quantity2);
      System.out.printf("%-10.2f", (float)price2);
      System.out.printf("  " + "%-10.2f", (float)total2);
  
      //complete item three format
      System.out.printf("\n%-30s", item3);
      System.out.printf("%-10d", (int)quantity3);
      System.out.printf("%-10.2f", (float)price3);
      System.out.printf("  " + "%-10.2f", (float)total3);
  
  
  
  
      System.out.printf("\n\n\nSubtotal %47.2f", grandTotal);
      System.out.printf("\n6.25 %s sales tax %39.2f", taxSign, salesTax);
      System.out.printf("\nTotal %50.2f", grandTotalTaxed);
  
  
  
  }
  </code></pre>
  
  <p>The problem is that every time the prices are the same, everything lines up, but lets say I type in a price of 50.00 and a price of 2.50 for two different items, then the items price and total decimal points don't all line up, please help.</p>