需要在java中使用2个十进制空格而不是1(特定实例)进行打印

时间:2016-02-09 05:49:40

标签: java number-formatting

我目前有一个正常运行的代码(多次编译和测试)但是我正在输出:

Card Balance: $500.0
Minimum payment to principle (3% of principle): $15.0
Minimum total payment (payment and fees): $60.0

我需要这些值打印出2位小数而不是1位(500.00而不是500.0)。我知道这很简单,但到目前为止还没有其他论坛帮助过我 - 当我尝试printf时出现转换错误,当我尝试DecimalFormat时,我得到一个错误,即DecimalFormat不存在。我只是不知所措,并希望得到任何帮助。我将在下面包含所有相关代码(但是对于相关性问题,我不会添加所有其余代码)。

    //Declaration
    double bal = 0;
    double intrst = 0;

    //Captures input
    Scanner scan = new Scanner(System.in);
    System.out.print("Current Balance: ");
    bal = scan.nextDouble();

     //Just explains intrst value
    if(late == true)
    if(lvl.equalsIgnoreCase(royal)) intrst = .022;
    else if(lvl.equalsIgnoreCase(gentry)) intrst = .028;
    else if(lvl.equalsIgnoreCase(common)) intrst = .03;
    else
   {
    System.out.println();
    System.out.print("Unknown customer level ");
    System.out.print("\"" + lvl + "\"");
    System.exit(1);
   }

    double minPay = (bal * 0.03);
    double totalMinPay = (minPay + lateFee) + (intrst * bal);

    System.out.println("Card Balance: $" +  bal);
    System.out.println("Minimum payment to principle (3% of principle): $" + (minPay));
    System.out.println("Minimum total payment (payment and fees): $" + totalMinPay);

3 个答案:

答案 0 :(得分:2)

您可以使用printf方法,如下所示:

 System.out.printf("%.2f", bal);

简而言之,%.2f语法告诉Java返回带有2位小数的变量(bal)。

答案 1 :(得分:1)

printf("Card Balance: $%.2f\n", bal);

使用printf时,使用%{s,d,f等}来告知打印将要打印的变量类型,例如。 s表示字符串,d表示int等.2指定2位小数。 \ n将与打印 ln 具有相同的效果,使其转到下一行。 从技术上讲,您可以在“”中格式化整个字符串。 还必须使用printf来分隔不同的参数,而不是println中使用的+

类似地:

printf("Minimum payment to principle (3% of principle): $%.2f\n", minPay);

编辑:

printf("Minimum payment to principle (3%% of principle): $%.2f\n", minPay);

我们必须使用double %%来表示我们要打印%并且它不是格式化的一部分

答案 2 :(得分:1)

java.io包中包含一个PrintStream类,它有两种格式化方法可用于替换print和println。这些方法,格式和printf,彼此相同。您一直使用的熟悉的System.out恰好是PrintStream对象,因此您可以在System.out上调用PrintStream方法。因此,您可以在代码中的任何位置使用format或printf。

以下程序显示了您可以使用格式进行的一些格式设置。输出显示在嵌入注释中的双引号中:

import java.util.Calendar;
import java.util.Locale;

public class TestFormat {

    public static void main(String[] args) {
      long n = 461012;
      System.out.format("%d%n", n);      //  -->  "461012"
      System.out.format("%08d%n", n);    //  -->  "00461012"
      System.out.format("%+8d%n", n);    //  -->  " +461012"
      System.out.format("%,8d%n", n);    // -->  " 461,012"
      System.out.format("%+,8d%n%n", n); //  -->  "+461,012"

      double pi = Math.PI;

      System.out.format("%f%n", pi);       // -->  "3.141593"
      System.out.format("%.3f%n", pi);     // -->  "3.142"
      System.out.format("%10.3f%n", pi);   // -->  "     3.142"
      System.out.format("%-10.3f%n", pi);  // -->  "3.142"
      System.out.format(Locale.FRANCE,
                        "%-10.4f%n%n", pi); // -->  "3,1416"

      Calendar c = Calendar.getInstance();
      System.out.format("%tB %te, %tY%n", c, c, c); // -->  "May 29, 2006"

      System.out.format("%tl:%tM %tp%n", c, c, c);  // -->  "2:34 am"

      System.out.format("%tD%n", c);    // -->  "05/29/06"
    }
}

有关详细信息,请查看 https://docs.oracle.com/javase/tutorial/java/data/numberformat.html