日常开发中经常会存在这么一个场景,需格式化输出金额信息,其要求为:若为整数,则不带小数位;若为小数,则保留两位小数。如:1.00 格式化后为1元,而1.23格式化后则为1.23元。
此时一般会用 BigDecimal 进行处理。下面给出核心代码:

其实现思路是:
通过BigDecimal 的 valueOf 方法将 double 类型的值转为 BigDecimal 类型
通过setScale 方法来设置保留的小数位数及舍入模式,此处的 RoundingMode.HALF_UP 即为过半进一。
通过 stripTrailingZeros 方法实现去除尾部的 0
通过 toPlainString 方法来获取对应的字符串输出
下面给出完整的示例代码:

执行结果如下:

当然,BigDecimal 转字符串的方法还有默认的 toString 方法,那么为何要选择 toPlainString 方法呢?这是因为在 toString 在某些情况下会以科学计数的形式展示。下面给出 toString 方法 和 toPlainString 方法效果的对比示例:

执行结果如下:
