BigDecimal常用方法详解

IDEA中的BigDecimal常用方法详解

1. 在项目中我们通常会求同比和环比我们就可以使用BigDecima;

2.案例如下:

    @Override
    public Map<String, Object> getJsrPzfx(String xzqh) {
        String jnjt = DateUtils.DateToString().substring(0, 10).replace("-", "");
        if (StringUtils.isNotBlank(xzqh)) {
            if (xzqh.endsWith("0000")) {
                xzqh = xzqh.substring(0, 2);
            } else if (xzqh.endsWith("00")) {
                xzqh = xzqh.substring(0, 4);
            } else if (xzqh.length() > 6) {
                xzqh = xzqh.substring(0, 6);
            } else {
                xzqh = xzqh;
            }
        }

        String sql = "select COALESCE(sum(case when zjcx like 'A%' then sl else 0 end),0) as az\n" +
                ",COALESCE(sum(case when zjcx like 'B%' then sl else 0 end),0) as bz\n" +
                ",COALESCE(sum(case when zjcx like 'C%' then sl else 0 end),0) as cz\n" +
                ",COALESCE(sum(sl),0) as zbyl\n" +
                "from app_dri_byl_day where xzqh like '" + xzqh + "%' and day_id<='" + jnjt + "'";

        Record record = Db.use("dsjmh").findFirst(sql);

        Map<String, Object> map = new HashMap<>();
        String az = record.getStr("az");
        String bz = record.getStr("bz");
        String cz = record.getStr("cz");
        String zbyl = record.getStr("zbyl");
        //保有量、A照、B照、C照
        if (null != record) {
            map.put("az", az);
            map.put("bz", bz);
            map.put("cz", cz);
        }
        if (zbyl.equals("0")) {
            String azzb = "0";
            String bzzb = "0";
            String czzb = "0";
            map.put("azzb", azzb);
            map.put("bzzb", bzzb);
            map.put("czzb", czzb);
        } else {
            String azzb = new BigDecimal(az).divide(new BigDecimal(zbyl), 2, BigDecimal.ROUND_HALF_UP) + "";
            String bzzb = new BigDecimal(bz).divide(new BigDecimal(zbyl), 2, BigDecimal.ROUND_HALF_UP) + "";
            String czzb = new BigDecimal(cz).divide(new BigDecimal(zbyl), 2, BigDecimal.ROUND_HALF_UP) + "";
            map.put("azzb", azzb);
            map.put("bzzb", bzzb);
            map.put("czzb", czzb);
        }
        return map;
    }

1. 常用方法

  • add(BigDecimal): BigDecimal对象中的值相加,返回BigDecimal对象
  • subtract(BigDecimal): BigDecimal对象中的值相减,返回BigDecimal对象
  • multiply(BigDecimal): BigDecimal对象中的值相乘,返回BigDecimal对象
  • divide(BigDecimal): BigDecimal对象中的值相除,返回BigDecimal对象
  • toString(): 将BigDecimal对象中的值转换成字符串
  • doubleValue(): 将BigDecimal对象中的值转换成双精度数
  • floatValue(): 将BigDecimal对象中的值转换成单精度数
  • longValue(): 将BigDecimal对象中的值转换成长整数
  • intValue(): 将BigDecimal对象中的值转换成整数
  • a.max (b) 比较取最大值
  • a.min(b) 比较取最小值
  • a.abs() 取最绝对值
  • negate(): 取相反数

2.BigDecimal大小比较

// 两个 BigDecimal 比较大小
int a = bigdemical.compareTo(bigdemical2)

// 于0比较大小
int a = bigdemical.compareTo(BigDecimal.ZERO)

结果:

a = -1,表示bigdemical小于bigdemical2;
a = 0,表示bigdemical等于bigdemical2;
a = 1,表示bigdemical大于bigdemical2;
posted @   a-tao必须奥利给  阅读(202)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示