import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* 判断数值是否在数学区间范围内
*
* @author AnNong
* @date 2023-04-07
*/
public class IntervalUtil {
public static ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");
/**
* @Description: 比较dataValue与interval结果
* @Param: [dataValue:比较值, interval:如 ≤0、≥0 、>0 、<0 、==0]
* @return: boolean
*/
public static boolean compareNumValue(String dataValue, String interval) {
//转换比较符号≤转换为<=,≥转换为>=
String comparator = interval.replace("≤", "<=").replace("≥", ">=");
//拼接表达式
StringBuffer formula = new StringBuffer();
formula.append("(");
formula.append(dataValue);
formula.append(comparator);
formula.append(")");
try {
//计算表达式
return (Boolean) jse.eval(formula.toString());
} catch (Exception t) {
return false;
}
}
/**
* 根据数学表达式计算结果
*
* @param expression 表达式, 70/(1.73*1.73)
* @param scala 四舍五入保留几位小数
* @return
*/
public static String calcValue(String expression, int scala) {
try {
//计算表达式
Object eval = jse.eval(expression);
if