怎么判断实际值是否在设定值的±5范围之内呢?
就比如说这个sdwc是10,wc必须在10的±5范围内算正常,也就是说wc如果在5-15之间就算正常。
//上线率
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;
}
}