java 货币格式化 精确俩位小数

public final class NumberUtil {
    private NumberUtil() {
    }

    /**
     * <p>
     * 使用 {@link NumberFormat} 的 getCurrencyInstance()
     * 货币的格式化 格式[¥123,456,789.00]
     */
    public static String formatCurrency(Object obj) {
        if (obj == null) {
            return "";
        }
        // format方法不能识别字符串类型
        if (obj instanceof String) {
            obj = new BigDecimal(String.valueOf(obj));
        }
        NumberFormat currencyInstance = NumberFormat.getCurrencyInstance(Locale.CHINA);
        return currencyInstance.format(obj);
    }

    /**
     * <p>
     * 使用 {@link DecimalFormat} 的 pattern
     * 货币的格式化 格式[123,456,789.00]
     */
    public static String formatCurrency01(Object obj) {
        if (obj == null) {
            return "";
        }
        // format方法不能识别字符串类型
        if (obj instanceof String) {
            obj = new BigDecimal(String.valueOf(obj));
        }
        NumberFormat currencyInstance = new DecimalFormat("¥,##0.00");
        return currencyInstance.format(obj);
    }

    public static void main(String[] args) {
        System.out.println(formatCurrency(null)); // 测试null
        System.out.println(formatCurrency(0)); // 测试0
        System.out.println(formatCurrency(123456789)); // 测试整数
        System.out.println(formatCurrency(123456789.123456789)); // 测试小数
        System.out.println(formatCurrency("123456789.123456789")); // 测试String

        System.out.println(formatCurrency01(null)); // 测试null
        System.out.println(formatCurrency01(0)); // 测试0
        System.out.println(formatCurrency01(123456789)); // 测试整数
        System.out.println(formatCurrency01(123456789.123456789)); // 测试小数
        System.out.println(formatCurrency01("123456789.123456789")); // 测试String
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容