首页 > 其他分享 >BigDecimal常用方法详解

BigDecimal常用方法详解

时间:2022-10-31 11:15:48浏览次数:46  
标签:map 常用 BigDecimal 详解 new put xzqh String

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;

标签:map,常用,BigDecimal,详解,new,put,xzqh,String
From: https://www.cnblogs.com/atao-BigData/p/16843602.html

相关文章

  • SpringMVC详解
     SpringMVC的介绍 【1】SpringWebMVC是基于ServletAPI构建的原始Web框架,从一开始就已包含在Spring框架中。正式名称“SpringWebMVC”来自其源模块的名称(spring-we......
  • mysql事务实现原理详解
    说说MySQL中的RedologUndolog都在干啥undo日志用于存放数据修改被修改前的值,假设修改tba表中id=2的行数据,把Name='B'修改为Name='B2',那么undo日志就会用来存放Nam......
  • 常用正则工具类
    packagecom.xx.xxx.xxxxx.utils;importorg.apache.log4j.Logger;importjava.util.regex.Matcher;importjava.util.regex.Pattern;/***@authorxdja*@dat......
  • 常用注解
    ##注解说明-@Autowired:自动装配通过类型,名字-@nullable:字段标记了这个注解,说明这个字段可以为null。-@Resource:自动装配通过名字,类型-@Component:组件,放在类上,说......
  • Latex Table 合并行/列详解
    1.整体逻辑整个table是由大小一致的单元格组成的,在这个基础上,我们通过合并单元格(行/列)的方式,实现整个table的设计:竖线用“|”,横线用“\cline“,列合并用”\multicolumn“,......
  • 常用DOS命令
    打开CMD的方式win+R输入cmd打开控制台(推荐)常用的DOS命令#盘符切换C:#查看当前目录下的所有文件dir#切换目录cdchangedirectorycd/dC:cd..#清理屏幕cls(......
  • DataGridView控件3——常用事件
    DataGridView的常用事件:1、CellClick,CellContentClick,CellDoubleClick2、CellValueChanged,CurrentCellDirtyStateChanged 1、CellChanged事件和CellContentClick事件......
  • ORM查询方法详解
    ORM查询方法 ......
  • Memcache详解
    Memcache详解参考链接https://blog.51cto.com/freeloda/1289806https://acecodeinterview.com/memcached/https://hoverzheng.github.io/post/technology-blog/archite......
  • Docker常用命令
    Docker常用命令(启动、镜像相关、容器相关、文件拷贝、目录挂载、查看容器IP地址、Docker备份与恢复)......