我目前有一个正常运行的代码(多次编译和测试)但是我正在输出:
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);
答案 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