怎么判断一个值是否在另一个值得±5范围之内呢?

怎么判断实际值是否在设定值的±5范围之内呢?
就比如说这个sdwc是10,wc必须在10的±5范围内算正常,也就是说wc如果在5-15之间就算正常。

img

        //上线率
        List<Map<String, Object>> phl = yhnfoService.phl(encryMap);
        String wc= (String) phl.get(0).get("wc");
        String sdwc= (String) phl.get(0).get("sdwc");
        System.out.println("实际值:"+wc+"设定值:"+sdwc);

用Math.abs方法


Double c = Double.parseDouble("0.1");
        if(Math.abs(c) <= 5){
            System.out.println("正常");
        } else {
            System.out.println("不正常");
        }

        String wc= "0.1";
        String sdwc= "10";
        Double dwc = Double.valueOf(wc);
        Double dsdwc = Double.valueOf(sdwc);

        boolean flag=Math.abs(dsdwc-dwc)<=5;
        System.out.println(flag);

取差的绝对值,再与5比较大小即可

因为你的数字存储的类型是object 不是数字,这是需要转换的。因为可能有小数计算,如果想要精确的计算最好使用bigdecimal 来做加减运算。


 public static void main(String[] args) {
        List<Map<String,Object>> mapList = new ArrayList<>();
        Map<String, Object> map = new HashMap<String, Object>(){
            {
             put("age", 0.1);
             put("total", 10);
            }
        };
        mapList.add(map);
        System.out.println("原始数据:"+mapList);
        double age = (double) mapList.get(0).get("age");
        int totalMap = (int) mapList.get(0).get("total");
        boolean result = sum(age, totalMap);
    }
    public static boolean sum(double d1,double d2){
        System.out.println("实际值:"+d1+"设定值:"+d2);
        //转换 BigDecimal 问题精度
        BigDecimal bd1 = new BigDecimal(Double.toString(d1));
        BigDecimal bd2 = new BigDecimal(Double.toString(d2));
        //设定值 - 实际值
        double v = bd2.subtract(bd1).doubleValue();
        if (Math.abs(v) > 5){
            System.out.println("设定值大于5");
            return true;
        }else {
            System.out.println("设定值小于5");
            return false;
        }
    }