【发布时间】:2019-10-29 03:51:48
【问题描述】:
我正在使用 neo4j 计算数据集的一些统计数据。为此,我经常在浮点值上使用 sum。根据情况,我得到不同的结果。例如,执行此操作的查询:
...
WITH foo
ORDER BY foo.fooId
RETURN SUM(foo.Weight)
返回与简单求和的查询不同的结果:
...
RETURN SUM(foo.Weight)
差异很小(293.07724195098984 vs 293.07724195099007)。但这足以使简单的相等检查失败。另一个例子是不同的数据库实例,使用相同的加载过程加载相同的数据会产生相同的问题(dbs 可能不是 1:1,某些关系的加载顺序可能不同)。我获取了 neo4j 求和的原始值(通过简单地删除 SUM())并验证它们在所有情况下都是相同的(不同的 dbs 和已排序/未排序)。
我在这里有什么选择?我不介意失去一些精度(我已经尝试将精度从小数点后 15 位降低到 12 位,但这似乎不起作用),但我需要匹配结果。
【问题讨论】:
标签: neo4j floating-point sum precision