私はIDLコードをPythonに翻訳しており、最終製品の違いに気づいています。違いは無視できません(IDL経由では19.03、Pythonでは19.16となります)。私は、2つのスクリプトが同じ値(通常は4番目、5番目、または6番目の小数点で異なる)を得ることを、複数の配列操作を開始する時点まで確認しました。私は精度が原因である可能性があると思っています(PythonとIDLの両方の配列はtype=FLOAT
です)。私は簡単な実験をしましたが、ここでも大きな違いがあります。確かにIDL対Python Float
IDL
a = 0.01
b = 0.0
for r = 1,1000 do begin
b += a
endfor
c = a * 1000
print,b
>>> 10.0001
print,c
>>> 10.0000
Pythonの
、違いは、この例ではまだ小さいですが、Pythonは明確にIDLがより真実にはるかに近いです。両方の言語がFLOAT精度を使用しているので、結果は同じであると予想しました。一番下の行は、エラーが両方の言語で異なる方法で伝播していることで、異なる結果が得られます。私の質問は以下のとおりです。
2つの言語間の精度の差がある(これは、Pythonの場合と同様、すなわちFLOATは、IDLで同じことを意味し、私はそれがないと思いますか)?
精度差を調整する方法はありますか?
私はIDLに関する多くの経験がありません。明白な何かが欠けている?
PS:
私がポップアップthis記事を書いていたとして。 OP(Pythonは正しい)と同じ問題が発生しています。 IDLで
IDL
>>> 3015/0.0002529821940697729
>>> 11917835.
パイソン
>>> 3015/0.0002529821940697729
>>> 11917834.814763514
'FLOAT'は精度ではありません...また、ここで' numpy'を使用していません... –
十分なjuanpaです。私は最近ナンパーを心に持っていると思う。質問が修正されました。 – tnknepp