比较IEEE浮点数和双精度数据的最佳方法是什么?我听说过几种方法,但我想看看社区的想法.
我想实现一些具有数值鲁棒性的几何算法。
为此,在系统范围delta内使用几何相等性。equals()for点通过使用deltafor近似相等的距离计算来实现。
我希望能够使用常规的Java集合,例如Set。但是我无法提出一个合理的hashCode()实现。
我的猜测是,有效HashSet使用的实现会导致空间边界带有“软”边界。delta到分区边界的距离小于点的点应该能够同时在最多八个(对于3D)相邻区域中分类。点足够近以至于代表它们的距离被认为相等,但是位于分区的不同侧面上的点将被“错误分类”。
这是我无法理解的事情。hashCode()就像将项目放在存储桶中,而单个项目最终在单个存储桶中一样,而我需要将其最多存储在八个中。
什么是合理的解决方案?我在滥用目的hashCode()吗?哪一个仍然是最合理的解决方案hashCode():)
编辑:谢谢,我有一个直觉,这个想法出了点问题,但我不能对此表示怀疑。你说得很清楚
请允许我将问题扩展到:如果我对较慢的HashSet操作没问题(这不是最有效的方法),那么由于没有正确的实现,我可能会hashCode()返回1,这将带来可怕的后果(它涉及几何计算) ),如果我确实实施了equals()降低传递性要求?