gpt4 book ai didi

java - 如何解决 MVEL 中包含浮点值的表达式?

转载 作者:行者123 更新时间:2023-12-01 06:16:29 25 4
gpt4 key购买 nike

我的表达是这样的:($a+$b)/$c

String expr = "($a+$b)/$c";
Float sum = Float.valueOf("2.2");
HashMap<String, Float> valueMap = new HashMap<String,Float>();
valueMap.put("$".concat(a)), sum);
sum = sum + Float.valueOf("1");
valueMap.put("$".concat(b)), sum );
sum = sum + Float.valueOf("1");
valueMap.put("$".concat(c)), sum );
VariableResolverFactory myVarFactory = new MapVariableResolverFactory();

Serializable compileExpression = MVEL.compileExpression(mtrExprD, valueMap); // here, Only a map of < String,Object > is allowed.

MVEL.executeExpression(compileExpression, myVarFactory); // This should return me a float Value.

MVEL.executeExpression() 返回一个 Object ;我希望 myExpression 返回浮点值而不是对象。怎么解决这个问题?

最佳答案

Mvel 总是返回对象,我们需要检查 instanceOf 中的 BooleanFloat 等。另外,在使用算术运算符进行计算时,使用 null 安全值会更安全。

例如,如果

你的exp是a * b,如果a或b是null,那么Mvel给出的结果是false

关于java - 如何解决 MVEL 中包含浮点值的表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23341923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com