Pythonのいくつかの実装(64ビットOS)をテストしていますが、正確な答えを測ることに興味があります(正しい小数点はいくつですか?反復回数が増えます。浮動小数点表現そのものが不正確であるため、小数点以下15桁を比較することは望ましくありません。浮動小数点結果の精度をN小数点以下の桁数に換算する
など。低反復カウントのために、私が得た答えは、私は私の答えは3になりたい上記の場合
>>> math.pi
3.141592653589793
をにMath.PIするために比較したい
>>> x
3.140638056205993
ある (第三十進数が間違っています)私はそれをやった方法は次のとおりです。
>>> p = str('%.51f' % math.pi)
>>> q = str('%.51f' % x)
>>> for i,(a,b) in enumerate(zip(p,q)):
... if a != b:
... break
上記すなわち文字列に山車を変換して文字ずつ比較し、これを行うのは良い方法があり、私には不器用に見える、より多くを語るPython的または股関節tは生の浮動小数点値自体を使用しますか?
Btw math.frexpが見つかりました。これを使用してこれを行うことはできますか?
>>> math.frexp(x)
(0.7851595140514982, 2)
これは、指定されたデルタ/イプシロン内で比較しています。例えば。上記の2つの値の差は0.0009545973838003263です。これは小数点第3位に変換できません。 – Tanager4
小数点の値に本当に関心がある場合は、はるかに良いとは思いません。0.02と同じ違いがあります大文字小文字の違いによる第2小数点または第1小数点への影響:2.34 vs 2.36または2.39 vs 2.41。 – Julien