浮動小数点数の等価性の比較は、丸めや精度の問題で少々面倒なことはよく知られています。これに関する例については、ブログ記事をご覧ください。浮動小数点数の比較、2012 年版ブルース・ドーソン著。
Python でこれをどう処理すればいいでしょうか?
これに対する標準ライブラリ関数はどこかで入手できますか?
ベストアンサー1
Python 3.5では、math.isclose
およびcmath.isclose
機能記載の通りペップ485。
以前のバージョンのPythonを使用している場合は、同等の関数がドキュメンテーション。
def isclose(a, b, rel_tol=1e-09, abs_tol=0.0):
return abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
rel_tol
相対的な許容値であり、2 つの引数の大きい方の大きさで乗算されます。値が大きくなるにつれて、それらが等しいとみなされながらそれらの間の許容差も大きくなります。
abs_tol
は、すべての場合にそのまま適用される絶対許容値です。差がいずれかの許容値よりも小さい場合、値は等しいとみなされます。