Java 打印不带小数的jodamoney

Java 打印不带小数的jodamoney,java,joda-money,Java,Joda Money,我知道如何使用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

我知道如何使用
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

您可以对货币进行舍入,然后从中获取字符串值并替换小数位

@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","")); 
            }
    );
}

您可以使用
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));

你有没有看报纸?这难道不足以让你做你需要做的事吗?我做了。就我所知,你可以使用BigMoney,这确实是一个有趣的方法