You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Camunda与SpringBoot解决DMN表格变量浮点精度及舍入问题

解决Camunda DMN浮点数精度匹配问题

针对你遇到的double/float精度导致DMN决策表匹配错误的问题,直接在DMN内部用以下几种方式处理:

  • 用FEEL表达式实现一位小数舍入
    Camunda的DMN支持FEEL表达式,你可以在输入列的「表达式」字段里直接对变量做舍入处理,而非直接引用原始变量。比如对double类型的b,写FEEL表达式:

    round(b * 10) / 10
    

    这个表达式会把0.600000000001这类值转换成0.6,刚好符合你要的#.#格式。配置时把输入列的变量名改成比如roundedB,然后在规则的匹配条件里用roundedB去匹配0.6的区间即可。

  • 排查之前舍入无效的原因
    你之前尝试舍入没生效,大概率是用了Java语法而非FEEL语法,或者把表达式放错了位置。FEEL的round函数是直接调用的,不需要加Math.前缀;而且必须把舍入表达式写在输入列的「表达式」栏,不是写在规则的匹配条件里。

  • 退而求其次:用容错区间匹配
    如果不想做舍入,也可以把区间范围放宽,比如把匹配0.6的条件改成[0.599, 0.601),覆盖浮点数的精度误差。但这种方式不如舍入通用,后续维护起来也麻烦,优先推荐第一种方法。

内容的提问来源于stack exchange,提问作者Floor is Java

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:45:27