私は適応型の「ほぼ等しい」メソッド(C#で書かれていますが、質問は一般的です)を作成しようとしています.2つのdoubleを受け入れ、「ほぼ等しい」かどうかブール値を返します。アダプティブとは、次のことを意味します。
1.234 および 1.235 ==> TRUE
しかし
1.234567 および 1.234599 ==> FALSE
つまり、「ほぼ等しい」の精度は、数値の精度に適応します。
2 つの変数がほぼ等しいかどうかを調べるにはどうすればよいですか?で丸めの概念を見つけました。しかし、イプシロンに何を使用するかという未解決の問題がまだあります。
この種の問題のベストプラクティスを知っている人はいますか? 前もって感謝します!
編集: 私の最初の質問には、取得しようとしていたものに関する十分な情報が含まれていませんでした。申し訳ありません。より高い精度の数値をより高い基準で扱い、より低い精度の数値に対してより寛大になるプログラムが必要です。ペアのその他の例は次のとおりです (「(0)」は暗黙のゼロです)。
1.077 および 1.07(0) は false を返します (77 は 70 と大きく異なるため)
1.000077 および 1.00007(0) は false を返します (77 は 70 とは大きく異なるため)
1.071 および 1.07(0) は true を返します (71 は 70 に近いため)
1.000071 および 1.00007(0) は true を返します (71 は 70 に近いため)
実装コードに関係なく、「非常に異なる」ものと「近い」ものを判断するための何らかの「許容範囲」変数があると思います。