金额格式转换

 

 

import java.math.BigDecimal;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @ 金额格式转换.
 */
public class AmountUtil {

    private static final BigDecimal MAG = BigDecimal.valueOf(1000);
    private static final BigDecimal MAG4 = BigDecimal.valueOf(10000);
    /**
     * 保留小数位数
     */
    private static final int SCALE_VALUE = 3;
    public static final int DEFAULT_MONERY_SCALE_VALUE = 2;

    /**
     * 四舍五入保留两位小数
     * 
     * @param amount
     * @return amount四舍五入结果
     */
    public static double formatAmount(double amount) {
        BigDecimal b = new BigDecimal(amount);
        return b.setScale(SCALE_VALUE, BigDecimal.ROUND_HALF_UP).doubleValue();
    }

    /**
     * 验证输入的字符串是否是金额格式
     * 
     * @param amount
     * @return
     */
    public static boolean checkAmount(String amountString) {
        if (null == amountString || amountString.trim().length() == 0) {
            return false;
        }
        amountString = amountString.trim();
        String str = "^(0(\\.\\d{0,2})?|([1-9]+[0]*)+(\\.\\d{0,2})?)$";
        Pattern p = Pattern.compile(str);
        Matcher m = p.matcher(amountString);
        return m.find();
    }

    /**
     * 格式化
     * @param amount
     * @return
     */
    public static String formatAmountStr(String amountString) {
        int pos = amountString.indexOf(".");
        if (pos != -1) {
            int tempInt = amountString.substring(pos + 1, amountString.length()).length();
            if (tempInt == 1) {
                amountString += "0";
            }
            if (tempInt > 2) {
                amountString = amountString.substring(0, pos + 3);
            }
        } else {
            amountString += ".00";
        }
        return amountString;
    }

    /**
     * 除1000得到真实钱值
     * @param money
     * @return
     */
    public static BigDecimal divide1000(Long money) {
        if (money == null) {
            return null;
        }
        BigDecimal result = BigDecimal.valueOf(money);
        return result.divide(MAG).setScale(DEFAULT_MONERY_SCALE_VALUE, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 除1000得到真实钱值(保留3位小数)
     * @param money
     * @return
     */
    public static BigDecimal divide1000Scale3(Long money) {
        if (money == null) {
            return null;
        }
        BigDecimal result = BigDecimal.valueOf(money);
        return result.divide(MAG).setScale(3, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 除1000得到真实钱值
     * @param money
     * @return
     */
    public static BigDecimal divide1000(BigDecimal money) {
        if (money == null) {
            return null;
        }
        return money.divide(MAG).setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 除10000得到真实钱值
     * @param money
     * @return
     */
    public static BigDecimal divide10000(Long money) {
        if (money == null) {
            return null;
        }
        BigDecimal result = BigDecimal.valueOf(money);
        return result.divide(MAG4).setScale(DEFAULT_MONERY_SCALE_VALUE, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 除10000得到真实钱值,保留4为小数
     * @param money
     * @return
     */
    public static BigDecimal divide10000For4Scale(Long money) {
        if (money == null) {
            return null;
        }
        BigDecimal result = BigDecimal.valueOf(money);
        return result.divide(MAG4).setScale(4, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 除10000得到真实钱值
     * @param money
     * @return
     */
    public static BigDecimal divide10000(BigDecimal money) {
        if (money == null) {
            return null;
        }
        return money.divide(MAG4).setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 乘以1000得到计算用钱值
     * @param money
     * @return
     */
    public static Long multiply1000(BigDecimal money) {
        if (money == null) {
            return null;
        }
        return money.multiply(MAG).setScale(2, BigDecimal.ROUND_HALF_UP).longValue();
    }

    /**
     * 乘以10000得到计算用钱值
     * @param money
     * @return
     */
    public static Long multiply10000(BigDecimal money) {
        if (money == null) {
            return null;
        }
        return money.multiply(MAG4).setScale(2, BigDecimal.ROUND_HALF_UP).longValue();
    }

    /**
     * 乘以1000得到计算用钱值
     * @param money
     * @return
     */
    public static Long multiply1000(Double money) {
        if (money == null) {
            return null;
        }
        BigDecimal result = BigDecimal.valueOf(money);
        return result.multiply(MAG).setScale(2, BigDecimal.ROUND_HALF_UP).longValue();
    }

    /**
     * 乘以1000得到计算用钱值
     * @param money
     * @return
     */
    public static Long multiply1000(Long money) {
        if (money == null) {
            return null;
        }
        BigDecimal result = BigDecimal.valueOf(money);
        return result.multiply(MAG).setScale(2, BigDecimal.ROUND_HALF_UP).longValue();
    }

//    public static void main(String[] args) {
//        long id = 1234567890L;
//        BigDecimal bigDecimal = AmountUtil.divide1000Scale3(id);
//        System.out.println(bigDecimal);
//    }
}

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值