首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印不带小数的jodamoney

打印不带小数的jodamoney
EN

Stack Overflow用户
提问于 2018-08-05 12:26:14
回答 2查看 240关注 0票数 0

我知道如何使用MoneyFormatterBuilder打印joda-money对象

代码语言:javascript
复制
Money m = Money.of(CurrencyUnit.USD, 48209);
System.out.println(new MoneyFormatterBuilder().appendAmount(MoneyAmountStyle.ASCII_DECIMAL_POINT_GROUP3_COMMA).toFormatter().print(m));

但这是用小数打印出来的:

代码语言:javascript
复制
48,209.00

如何打印不带小数的joda-money对象?并在必要时将其四舍五入?因此,上面的输出将是:

代码语言:javascript
复制
48,209

并且(另一个例子) 48209.69将打印48210

EN

回答 2

Stack Overflow用户

发布于 2018-08-05 13:58:36

你可以对钱进行四舍五入,然后从中获取字符串值并替换小数位。

代码语言:javascript
复制
@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","")); 
            }
    );
}
票数 0
EN

Stack Overflow用户

发布于 2018-08-05 14:03:49

您可以使用BigMoney

试试这个:

代码语言:javascript
复制
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));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51691382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档