金额转换工具类 , 元转分, 分转元

发布时间 2023-04-06 15:19:51作者: Sappy

元转分 (String --- int):

分转元 (Integer --- String):

分转元(Integer --- BigDecimal):

完整代码;

点击查看代码

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.math.BigDecimal;

/**
 * 金额转换
 *
 * @author Sappy
 * @date 3/4/2023 09:50:20
 */
public class MoneyUtils {
    private MoneyUtils() {
    }

    private static Logger logger = LoggerFactory.getLogger(MoneyUtils.class);

    /**
     * 元转分 (String --- int)
     * @param yuan
     * @return
     */
    public static int yuan2Fen(String yuan) {
        int value = 0;
        try {
            BigDecimal var1 = new BigDecimal(yuan);
            BigDecimal var2 = new BigDecimal(100);
            BigDecimal var3 = var1.multiply(var2);
            value = Integer.parseInt(var3.stripTrailingZeros().toPlainString());
        } catch (Exception e) {
            logger.error("yuan2Fen ERROR!", e);
            throw new IllegalArgumentException(String.format("非法金额[%s]", yuan));
        }
        if (value < 0){
            logger.error("yuan2Fen ERROR!");
            //金额小于0 , 抛出异常
            throw new IllegalArgumentException(String.format("非法金额[%s]", yuan));
        }
        return value;
    }

    /**
     * 分转元 (Integer --- String)
     * @param fen
     * @return
     */
    public static String fen2Yuan(Integer fen) {
        if (null == fen) {
            return null;
        }
        BigDecimal var1 = new BigDecimal(fen);
        BigDecimal var2 = new BigDecimal(100);
        BigDecimal var3 = var1.divide(var2);
        return var3.stripTrailingZeros().toPlainString();
    }

    /**
     * 分转元(Integer --- BigDecimal)
     * @param fen
     * @return
     */
    public static BigDecimal fen2YuanDecimal(Integer fen) {
        if (null == fen) {
            return null;
        }
        BigDecimal var1 = new BigDecimal(fen);
        BigDecimal var2 = new BigDecimal(100);
        BigDecimal var3 = var1.divide(var2);
        return var3;
    }

}