Solr错误聚合

时间:2015-11-03 05:42:54

标签: solr

仅当值为“0.18”的值“v1”与值“v2”(具有“-14.13”等负值)相加时,Solr聚合和才会显示字段的高精度值。

正确的答案应该是-13.95。

但它给出了-13.9500000000000000001。

1 个答案:

答案 0 :(得分:1)

Java中的双精度只是近似值。如果空间有限,您将始终能够找到存在舍入错误的情况。如果您运行代码System.out.println("Double sum: " + (0.18d + -14.13d));,您将获得与Solr提供的相同的结果:-13.950000000000001。

可以通过在Solr中使用BigDecimal或类似方法来补救或至少改进,但这将是空间和速度的非常高的成本。使用浮点时,标准做法是允许出现轻微差异。两者都在比较数字并将其写出来。