我知道如何使用MoneyFormatterBuilder打印joda-money对象
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
发布于 2018-08-05 13:58:36
你可以对钱进行四舍五入,然后从中获取字符串值并替换小数位。
@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",""));
}
);
}发布于 2018-08-05 14:03:49
您可以使用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));https://stackoverflow.com/questions/51691382
复制相似问题