Подтвердить что ты не робот

Значение двойного значения в формате Java в виде суммы в долларах

Мне нужно отформатировать двойной "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) + ".");
}
4b9b3361

Ответ 1

Используйте NumberFormat.getCurrencyInstance():

double amt = 123.456;    

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

Вывод:

$123.46

Ответ 2

Вы можете использовать DecimalFormat

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

Это даст вам распечатку с всегда 2dp.

Но на самом деле, вы должны использовать BigDecimal за деньги, из-за проблем с плавающей точкой

Ответ 3

Используйте DecimalFormat для печати десятичного значения в нужном формате, например.

DecimalFormat dFormat = new DecimalFormat("#.00");
System.out.println("$" + dFormat.format(amt));

Если вы хотите отобразить $amount в формате номера США, чем попробуйте:

DecimalFormat dFormat = new DecimalFormat("####,###,###.00");
System.out.println("$" + dFormat.format(amt));

Используя .00, он всегда печатает две десятичные точки независимо от их присутствия. Если вы хотите печатать десятичные числа только тогда, когда они присутствуют, используйте .## в строке формата.

Ответ 4

Вы можете использовать printf для одного лайнера

System.out.printf("The original balance is $%.2f.%n", cardBalance);

Это всегда будет печатать два десятичных знака, округляя по мере необходимости.

Ответ 5

Используйте BigDecimal вместо double для типов валют. В книге Java Puzzlers мы видим:

System.out.println(2.00 - 1.10);

и вы увидите, что оно не будет 0.9.

String.format() имеет шаблоны для форматирования чисел.

Ответ 6

  NumberFormat in=NumberFormat.getCurrencyInstance();
  double payment = 12324.134;
  System.out.println("US: " + in.format(payment));

вывод: $ 12,324.13