java金钱计算工具类Money

import java.math.BigDecimal;

/**
 * 金钱计算工具类
 */

public class MoneyUtil {
    /**
     * 加法
     * @param v1
     * @param v2
     * @return
     */
    public static BigDecimal add(BigDecimal v1,BigDecimal v2){
        if(v1 == null || "".equals(v1)){
            v1 = new BigDecimal(0);
        }else if(v2 == null || "".equals(v2)){
            v2 = new BigDecimal(0);
        }
        return v1.add(v2).setScale(2,  BigDecimal.ROUND_DOWN);

    }

    /**
     * 减法
     * @param v1
     * @param v2
     * @return
     */
    public static BigDecimal subtract(BigDecimal v1,BigDecimal v2){
        if(v1 == null || "".equals(v1)){
            v1 = new BigDecimal(0);
        }else if(v2 == null || "".equals(v2)){
            v2 = new BigDecimal(0);
        }
        return v1.subtract(v2).setScale(2,  BigDecimal.ROUND_DOWN);
    }

    /**
     * 除法
     * @param v1
     * @param v2
     * @return
     */
    public static BigDecimal divide(BigDecimal v1,BigDecimal v2){
        if(v1 == null || "".equals(v1)){
            v1 = new BigDecimal(0);
        }else if(v2 == null || "".equals(v2)){
            v2 = new BigDecimal(0);
        }
        // 暂时不算负数的情况
        int i = v2.compareTo(new BigDecimal(0));
        if(i == 0){
            return new BigDecimal(0);
        }
        return v1.divide(v2,2,  BigDecimal.ROUND_DOWN);
    }

    /**
     * 乘法
     * @param v1
     * @param v2
     * @return
     */

    public static BigDecimal multiply(BigDecimal v1,BigDecimal v2){
        if(v1 == null || "".equals(v1)){
            v1 = new BigDecimal(0);
        }else if(v2 == null || "".equals(v2)){
            v2 = new BigDecimal(0);
        }
        return v1.multiply(v2).setScale(2,  BigDecimal.ROUND_DOWN);
    }

    // 小于
    public static boolean lt(BigDecimal v1,BigDecimal v2) {
        return v1.compareTo(v2) == -1;
    }

    // 等于
    public static boolean eq(BigDecimal v1,BigDecimal v2) {
        return v1.compareTo(v2) == 0;
    }

    // 大于
    public static boolean gt(BigDecimal v1,BigDecimal v2) {
        return v1.compareTo(v2) == 1;
    }

    // 大于等于
    public static boolean ge(BigDecimal v1,BigDecimal v2) {
        return v1.compareTo(v2) > -1;
    }

    // 小于等于
    public static boolean le(BigDecimal v1,BigDecimal v2) {
        return v1.compareTo(v2) < 1;
    }

    /**
     * 换算积分
     * @param money
     * @return
     */
    public static Integer integral(BigDecimal money){
      Integer integer=money.intValue()/10;
      return integer;
    }

//    public static void main(String [] args){
//        //加法
//        BigDecimal jia=add(BigDecimal.valueOf(5.66),BigDecimal.valueOf(3.347));
//        System.out.println("加法:"+jia);
//        //减法
//        BigDecimal jian=subtract(BigDecimal.valueOf(5.66),BigDecimal.valueOf(3.347));
//        System.out.println("减法:"+jian);
//        //乘法
//        BigDecimal chen=multiply(BigDecimal.valueOf(5.66),BigDecimal.valueOf(3.347));
//        System.out.println("乘法:"+chen);
//        //除法
//        BigDecimal chu=divide(BigDecimal.valueOf(5.66),BigDecimal.valueOf(3.347));
//        System.out.println("积分:"+integral(BigDecimal.valueOf(101.88)));
//    }



}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中有多种计算金钱的方法,以下是其中的一些: 1. BigDecimal :该提供了高精度的十进制计算,可以避免浮点数计算时的精度问题。可以使用 BigDecimal 的 add、subtract、multiply、divide 等方法进行加减乘除操作。需要注意的是,BigDecimal 的构造方法参数必须为字符串型。 示例代码: ```java BigDecimal money1 = new BigDecimal("10.5"); BigDecimal money2 = new BigDecimal("5.2"); BigDecimal result = money1.add(money2); System.out.println(result); // 输出 15.7 ``` 2. DecimalFormat :该可以将数字格式化为指定格式的字符串。可以使用 setMinimumFractionDigits、setMaximumFractionDigits 等方法设置小数位数,使用 setRoundingMode 方法设置舍入模式。 示例代码: ```java double money = 10.5; DecimalFormat df = new DecimalFormat("#.00"); String result = df.format(money); System.out.println(result); // 输出 10.50 ``` 3. Math :该提供了常用的数学函数,例如 round、floor、ceil 等。需要注意的是,这些函数的参数和返回值都是 double 型,因此可能存在精度问题。 示例代码: ```java double money = 10.5; double result = Math.round(money * 100) / 100.0; System.out.println(result); // 输出 10.5 ``` 4. Currency :该表示一种货币,可以使用 getInstance 方法获取指定国家的货币实例,使用 getSymbol 方法获取货币符号,使用 getDisplayName 方法获取货币名称。 示例代码: ```java Currency cny = Currency.getInstance("CNY"); String symbol = cny.getSymbol(); String name = cny.getDisplayName(); System.out.println(symbol); // 输出 ¥ System.out.println(name); // 输出 人民币 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值