Java在金额方面的使用

double类型在计算中存在缺陷,在金额的计算时需要更精确的类型。

    public static double add(double v1,double v2){  
        BigDecimal b1 = new BigDecimal(Double.toString(v1));  
        BigDecimal b2 = new BigDecimal(Double.toString(v2));  
        return b1.add(b2).doubleValue();  
    }  
    public static double sub(double v1,double v2){  
        BigDecimal b1 = new BigDecimal(Double.toString(v1));  
        BigDecimal b2 = new BigDecimal(Double.toString(v2));  
        return b1.subtract(b2).doubleValue();  
    }  
    public static double mul(double v1,double v2){  
        BigDecimal b1 = new BigDecimal(Double.toString(v1));  
        BigDecimal b2 = new BigDecimal(Double.toString(v2));  
        return b1.multiply(b2).doubleValue();  
    }  
    public static double div(double v1,double v2){  
        BigDecimal b1 = new BigDecimal(Double.toString(v1));  
        BigDecimal b2 = new BigDecimal(Double.toString(v2));  
        return b1.divide(b2).doubleValue();  
    } 

将一个double类型的数据转换为金额表示的字符串

    /**
     * 将金额转换成金额表示的标准格式
     * @param money double类型的数据
     * @param pattern 非定域模式字符串
     * @return String 类型的字符串
     */
    public static String moneyFormat(double money, String pattern) {
        pattern = (pattern == null || pattern.equals("")) ? "#,##0.00" : pattern;
        DecimalFormat df = new DecimalFormat(pattern);
        try {
            return df.format(money);
        }
        catch (Exception e) {
            //log输出错误信息
            return String.valueOf(money);
        }
    }

将一个String类型的标准金额格式转换为double类型的数字

    /**
     * 将金额标准格式转换成金额
     * @param inputStr 金额标准格式
     * @return double类型的数字
     */
    public static double FormatToMoney(String inputStr){
        double money = 0.00;
        if(inputStr == null || inputStr.equals(""))
            return money;
        money = Double.parseDouble(inputStr.replace(",", ""));//去掉标准格式中的逗号
        return money;
    }

将一个BigDecimal的字符串转换为金额表示的形式

    /**
     * 将金额标准格式转换成金额(解决了如果数据太大double表示不精确)
     * @param inputStr BigDecimal的金额数据
     * @param pattern 非定域模式
     * @return 格式化后的金额表示
     */
    public static String moneyFormat(BigDecimal inputStr, String pattern){
        pattern = (pattern == null || pattern.equals("")) ? "#,##0.00" : pattern;
        DecimalFormat df = new DecimalFormat(pattern);
        try {
            return df.format(inputStr);
        }
        catch (Exception e) {
//            log输出错误信息
            return String.valueOf(inputStr);
        }
    }








。。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值