Java 在计算spring表达式后,无法获取小数点后的值
我正在尝试做以下事情:Java 在计算spring表达式后,无法获取小数点后的值,java,spring,spring-el,Java,Spring,Spring El,我正在尝试做以下事情: String value = "10/3"; ExpressionParser parser = new SpelExpressionParser(); final Expression expression = parser.parseExpression(value); System.out.println("value1: "+expression.getValue(Double.class)); System.out.println("value2: "+exp
String value = "10/3";
ExpressionParser parser = new SpelExpressionParser();
final Expression expression = parser.parseExpression(value);
System.out.println("value1: "+expression.getValue(Double.class));
System.out.println("value2: "+expression.getValue());
输出:
value1: 3.0
value2: 3
我无法获取小数点后的值。上面的值可以是任何数学表达式,如
(3/4*5+10)
,因此我无法读取此字符串。对于像您这样的简单数学表达式,您可以使用。您需要遵循三个步骤:
ScriptEngineManager
对象ScriptEngine
对象ScriptEngine
的eval
方法评估脚本import javax.script.*;
public class EvalScript {
public static void main(String[] args) throws Exception {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.eval("3/4*5 + 10");
}
}
值为“10/3”时,两者都是整数,因此执行整数除法。如果要获取十进制值,其中一个值必须是十进制值,例如:
String value = "10/3";
完整示例:
String value = "10/3.0";
ExpressionParser parser = new SpelExpressionParser();
final Expression expression = parser.parseExpression(value);
System.out.println("value1: "+expression.getValue(Double.class));
System.out.println("value2: "+expression.getValue());
输出:
很抱歉,我不认为需要regex标记,因为它可能像Java一样解析,
double d=10/3
也是3
,因为10/3
被解释为整数除法?尝试String value=“10.0/3”
ya这会起作用,但问题是,如果我得到(10/3),输入可能是任何格式,它是失败的。@任务这不起作用,因为它首先计算(10/3)=3,然后与1.0相乘。这项技术对上面提到的表达式(即spring表达式)有任何负面影响吗,不。对于特定于Spring的表达式,JavaScript API不会work@Shaan,如果你觉得有用,请给出我的答案
value1: 3.3333333333333335
value2: 3.3333333333333335