【问题标题】:Camunda rest engine json number as BigDecimalCamunda 休息引擎 json 编号为 BigDecimal
【发布时间】:2020-01-07 08:41:31
【问题描述】:

我已经下载了 camunda bpm 平台,以便使用 rest api 评估 dmn 决策。

为此,我部署了这个决策表:

并发送这个 json 请求:

{
    "variables":
    {
        "a": {
            "value": 100.01
        },
        "b": {
            "value": 10.01
        }
    }
}

我收到以下回复:

[
    {
        "result": {
            "type": "Double",
            "value": 110.02000000000001,
            "valueInfo": {}
        }
    }
]

我希望“结果”的值是“110.02”,但它却给出了“110.02000000000001”。 问题是 camunda “engine-rest” 接收数字为“Double”,因此通过求和它会降低精度。

有没有办法让camunda“engine-rest”从json接收数字作为“BigDecimal”而不是“Double”,以免失去精度?

【问题讨论】:

    标签: json bigdecimal camunda


    【解决方案1】:

    This 线程讨论您的问题。看起来这是一个开放的错误。

    “下面,您可以找到一个测试类,它评估一个具有小数结果类型的简单决策表,如果它没有被引号包围,则显示它被四舍五入到最接近的双精度值。” p>

    听起来就像您正在寻找的一样。

    最好的问候 塞巴斯蒂安

    【讨论】:

    • 感谢您的回答,我之前已经看过该线程,它是相关的,但不是同一个问题。在提到的线程中显示了一个示例,这是通过直接使用“camunda-dmn-engine”来完成的。如果我直接使用它并将“a”和“b”作为 BIgDecimal 发送,我没有任何问题。但是当我使用“camunda-bpm-platform”时,它使用 web 层“engine-rest”来接收 json 输入并将它们转换为 java 对象以调用“camunda-dmn-engine”,json 中的数字被转换变成 Double,执行“a + b”时会丢失精度。
    猜你喜欢
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多