Java - 将双倍值格式化为美元金额

2022-09-01 08:09:42

我需要将双“amt”格式化为美元金额println(“$”+美元+“.”+美分),以便小数点后有两位数字。

这样做的最佳方式是什么?

if (payOrCharge <= 1)
{
    System.out.println("Please enter the payment amount:");
    double amt = keyboard.nextDouble();
    cOne.makePayment(amt);
    System.out.println("-------------------------------");
    System.out.println("The original balance is " + cardBalance + ".");
    System.out.println("You made a payment in the amount of " + amt + ".");
    System.out.println("The new balance is " + (cardBalance - amt) + ".");
}
else if (payOrCharge >= 2)
{
    System.out.println("Please enter the charged amount:");
    double amt = keyboard.nextDouble();
    cOne.addCharge(amt);
    System.out.println("-------------------------------");
    System.out.println("The original balance is $" + cardBalance + ".");
    System.out.println("You added a charge in the amount of " + amt + ".");
    System.out.println("The new balance is " + (cardBalance + amt) + ".");
}

答案 1

Use NumberFormat.getCurrencyInstance()

double amt = 123.456;    

NumberFormat formatter = NumberFormat.getCurrencyInstance();
System.out.println(formatter.format(amt));

输出:

$123.46

答案 2

您可以使用十进制格式

DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(amt));

这将为您提供始终为2dp的打印输出。

但实际上,你应该使用BigDecimal赚钱,因为浮点问题


推荐