Commit f87d6dea by zhangkb

修改aviator表达式计算引擎计算整数取整问题

parent ecb3b9f4
......@@ -163,9 +163,12 @@ public class DriveIndIdObjCalActor extends AbstractActor{
String indValue = baseIndValueMsg.getValue();
//如果指标值返回空值
if(StringUtils.isBlank(indValue)) {
indValue="0.0";
indValue="0.00";
}
try {
if(indValue.indexOf(".")<0) {
indValue += ".00";
}
driveIndFormula = driveIndFormula.replace("["+baseIndValueMsg.getIndId()+"]",
indValue);
//替换公式中的基础指标id为确定指标值
......
......@@ -192,6 +192,9 @@ public class DriveIndDefService {
List<String> indDateList = baseIndDataService.getIndData(indId,
date,compareObjs,code);
String sumValue = CalculateUtils.sumValue(indDateList);
if(sumValue.indexOf(".")<0) {
sumValue += ".00";
}
env.put(indId, Double.valueOf(sumValue));
driveIndFormula = driveIndFormula.replace("["+indId+"]", sumValue);
}
......
......@@ -42,6 +42,12 @@ public class CalculateUtils {
if(!"NaN".equals(currentValue) && !"Infinite".equals(currentValue) && StringUtils.isNotBlank(currentValue)
&& !"NaN".equals(sameValue) && !"Infinite".equals(sameValue) && StringUtils.isNotBlank(sameValue)) {
Object value = null;
if(currentValue.indexOf(".")<0) {
currentValue += ".00";
}
if(sameValue.indexOf(".")<0) {
sameValue += ".00";
}
if("0".equals(type)) {
formula.append(currentValue).append("-").append(sameValue);
}else {
......@@ -133,10 +139,14 @@ public class CalculateUtils {
if(StringUtils.isBlank(values.get(i))) {
continue;
}
String value = values.get(i);
if(value.indexOf(".")<0) {
value += ".00";
}
if(i==values.size()-1) {//最后一个不加+号
formula.append("(").append(values.get(i)).append(")");
formula.append("(").append(value).append(")");
}else {
formula.append("(").append(values.get(i)).append(")").append("+");
formula.append("(").append(value).append(")").append("+");
}
}
if(formula.toString().endsWith("+")) {
......@@ -172,10 +182,14 @@ public class CalculateUtils {
continue;
}
}
String value = values.get(i);
if(value.indexOf(".")<0) {
value += ".00";
}
if(i==values.size()-1) {//最后一个不加+号
formula.append("(").append(values.get(i)).append(")");
formula.append("(").append(value).append(")");
}else {
formula.append("(").append(values.get(i)).append(")").append("+");
formula.append("(").append(value).append(")").append("+");
}
}
if(formula.toString().endsWith("+")) {
......@@ -379,9 +393,15 @@ public class CalculateUtils {
// map.put("1002", "5");
// formula = formula.replace("[1001]", "3");
// formula = formula.replace("[1002]", "5");
// String result1 = AviatorEvaluator.execute(formula).toString();
String ss = "1755";
String formula = "(ss/2299-1)*100";
if(ss.indexOf(".")<0) {
ss += ".00";
}
formula = formula.replace("ss", ss);
String result1 = AviatorEvaluator.execute(formula).toString();
// String result2 = cal.calculateFormula(formula, map);
// System.out.println(result1);
System.out.println(result1);
// System.out.println(result2);
// Double b = (double) Math.abs(34-50);
// System.out.println(b);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment