定義された許容範囲 ( ) を使用してHashSet
(現在 s) の実数の を作成したい(cf
を使用すると、正確な等価性に対してのみ機能し、最終的なクラスであるため、使用できません。私の最初のアイデアは、拡張することです(たとえば、)、メソッドを使用して、 からこの値を使用する新しいクラスを作成します.ただし、既存のソリューションと既存の F/OSS ライブラリがあるかどうかを確認したい.Double
epsilon
Assert.assertEquals(double, double, double)
Double.equals()
Double
HashSet
DoubleHashSet
setEpsilon(double)
ComparableDouble
equals()
DoubleHashSet
(将来的には、これを実数のタプル (長方形や立方体など) に拡張したいと考えているため、一般的なアプローチが望ましい
注: @NPE は、それは不可能だと示唆しています。残念ながら、これは正式には正しいと思います:-)おおよその方法があるかどうか疑問に思っています...他の人はこの問題を抱えていて、おおよそ解決したに違いありません。(私はすでにツールReal.isEqual(a, b, epsilon)
を定期的に使用しており、非常に便利です。) 私は、推移性のまれなエラーを受け入れる準備ができています。
注: 「nearly equals()」の問題を解決するため、TreeSet を使用します。後で、complexNumbers、長方形 (およびより複雑なオブジェクト) を比較しますが、2 つのものが等しい範囲内で制限を設定できると非常に便利です。complexNumbers の単純で自然な順序付けはありません (おそらく Cantor アプローチが機能するでしょう) が、それらがほぼ等しいかどうかはわかります。