У меня есть BigDecimal
поле , amount
которое представляет деньги, и мне нужно напечатать его значение в браузере в формате , как $123.00
, $15.50
, $0.33
.
Как я могу это сделать?
(Единственное простое решение , которое я вижу себя получает floatValue
от BigDecimal
а затем использовать , NumberFormat
чтобы сделать две цифры точности для дробной части).
Чтобы установить разделитель тысяч, скажем,
123,456.78
вам нужно использовать DecimalFormat :Вот результат:
Хотя я установил
#,###.00
маску, она успешно форматирует и более длинные значения. Обратите внимание, что разделитель запятой (,) в результате зависит от вашего языкового стандарта. Это может быть просто пробел () для русской локали.источник
"#,##0.00"
вместо этого шаблон .Другой способ, который может иметь смысл в данной ситуации:
Я говорю это потому, что в некоторых случаях, когда речь идет о деньгах, превышение двух знаков после запятой не имеет смысла. Если пойти дальше, это может привести к
но я просто хотел выделить метод setScale (который также может принимать второй аргумент режима округления для управления обработкой последнего десятичного разряда. В некоторых ситуациях Java вынуждает вас указать этот метод округления).
источник
// выводит 3.14
// выводит 13
источник
Аналогично ответу @Jeff_Alieffson, но не по умолчанию
Locale
:Используйте
DecimalFormatSymbols
для явного языкового стандарта:Или явные символы-разделители:
Затем:
Результат:
источник
источник