package com.hzy.common.utils;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;

public final class RMBUtil {

    static final BigDecimal BASE = new BigDecimal("100");
    static final NumberFormat FORMAT = NumberFormat.getCurrencyInstance(Locale.CHINA);

    private RMBUtil() {
        throw new RuntimeException("工具类");
    }

    public static BigDecimal yuanToFen(BigDecimal yuan) {
        if (yuan == null) {
            return null;
        } else {
            return yuan.multiply(BASE);
        }
    }

    public static BigDecimal fenToYuan(BigDecimal fen) {
        return fenToYuan(fen, 2);
    }

    public static BigDecimal fenToYuan(BigDecimal fen, int scale) {
        if (fen == null) {
            return null;
        } else {
            return fen.divide(BASE, scale, BigDecimal.ROUND_HALF_UP);
        }
    }

    /**
     * 人民币格式化
     * @param amount 原金额
     * @param digits 几位小数
     * @return
     */
    public static String format(BigDecimal amount, int digits){
        FORMAT.setMinimumFractionDigits(digits);
        return FORMAT.format(amount);
    }

    public static String formatComma(BigDecimal amount) {
        DecimalFormat df = new DecimalFormat("#,##0.00");
        return df.format(amount);
    }
//
//    public static void main(String[] args) {
//        System.out.println(formatComma(new BigDecimal("1123344.789")));
//        System.out.println(formatComma(new BigDecimal("0.789")));
//        System.out.println(format(new BigDecimal("123344.45"), 0));
//        System.out.println(format(new BigDecimal("123344.00"), 0));
//        System.out.println(format(new BigDecimal("123344"), 0));
//
////        ￥123,344.99
////        ￥123,344.45
////        ￥123,344
////        ￥123,344
//
//
//    }

}
