是否有内置支持将 epsilon 添加为输入参数,以便与 mvel 方言进行双重比较?

Is there an in-built support to add epsilon as an input parameter for double comparsions with mvel dialect?

提问人:Ramya Loganathan 提问时间:6/27/2023 最后编辑:Ramya Loganathan 更新时间:6/27/2023 访问量:22

问:

我正在使用 mvel 方言来定义流口水规则引擎的规则。它可以包括算术表达式,如下图所示的 when 部分

rule "Test rule"
    dialect "mvel"
when
    context : ActionContext( context.get("test") == 0.8 )
then
context.add("Success" , "test");

end

我希望规则的执行在进行双重比较时考虑 epsilon 值。就我浏览 mvel 库和互联网搜索空间而言,我找不到一个简单的解决方案。但这似乎是一个普遍的问题。mvel 是否以任何方式支持此功能?

注意:考虑到性能影响,我不想使用 BigDecimal。

我可以做的是为每个双重比较编写一个自定义函数。但这似乎是最后一件事。有没有更好的方法?

java 流口水 mvel epsilon

评论

0赞 Roddy of the Frozen Peas 6/27/2023
你可以像在 Java 中一样做。如果你要避免BigDecimal,那将是一个自定义函数,不是吗?
0赞 Ramya Loganathan 7/6/2023
是的,但是 mvel 旨在处理类型转换并且优雅,如果我在任何地方添加函数调用,它有点消除了使用 mvel 的优势。这就是为什么我正在检查是否有办法强制执行 mvel 来做到这一点@RoddyoftheFrozenPeas
0赞 Roddy of the Frozen Peas 7/6/2023
̄\_(ツ)_/ ̄ 也许如果你把它作为一个 mvel 问题而不是一个流口水的问题,那么......

答: 暂无答案