DC娱乐网

Java 中实现 double 类型转金额形式

日常开发中经常会存在这么一个场景,需格式化输出金额信息,其要求为:若为整数,则不带小数位;若为小数,则保留两位小数。如:

日常开发中经常会存在这么一个场景,需格式化输出金额信息,其要求为:若为整数,则不带小数位;若为小数,则保留两位小数。如: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 方法效果的对比示例:

执行结果如下: