Распечатать jodamoney без десятичных знаков
Я знаю, как напечатать объект joda-money, используя MoneyFormatterBuilder
:
Money m = Money.of(CurrencyUnit.USD, 48209);
System.out.println(new MoneyFormatterBuilder().appendAmount(MoneyAmountStyle.ASCII_DECIMAL_POINT_GROUP3_COMMA).toFormatter().print(m));
Но это печатает это с десятичными знаками:
48,209.00
Как напечатать объект joda-money без десятичных знаков? И есть ли округлить в случае необходимости? Так что результат вышеупомянутого будет:
48,209
И (другой пример) 48209.69
будет печатать 48210
?
2 ответа
Ты можешь использовать BigMoney
,
Попробуйте с этим:
BigDecimal bigDecimal = new BigDecimal("48209.60");
BigMoney m = BigMoney.of(CurrencyUnit.USD, bigDecimal.setScale(0,RoundingMode.HALF_UP));
System.out.println(new MoneyFormatterBuilder().appendAmount(MoneyAmountStyle.ASCII_DECIMAL_POINT_GROUP3_COMMA).toFormatter().print(m));
Вы можете округлить деньги, а затем извлечь из них строковое значение и заменить десятичные знаки.
@Test
void formatMoney() {
Arrays.asList(10.44d, 10.45d, 10.46d, 10.50d, 10.55d).forEach(
d -> {
Money money = Money.of(CurrencyUnit.USD, d);
LOGGER.info("Money with decimal: {}\tRounded money: {}\tFormatted string out of money: {}",
money,
money.rounded(0, RoundingMode.HALF_UP),
money.rounded(0, RoundingMode.HALF_UP).toString().replace(".00",""));
}
);
}