2016-04-05 7 views
0

私はIDLでいくつかの画像処理をしており、高精度が必要でした。 しかし、私は私の同僚のプログラムをデバッグするとき、私は奇妙ないくつかのことを見つける:IDLが同じ表現で異なる値を持つのはなぜですか?

IDL> lat,y_res 
    45.749001 
    0.00026999999 
IDL> lat - findgen(10)*y_res + y_res * 0.5 + findgen(10)*y_res + y_res * 0.5 
    45.749268  45.749268  45.749268  45.749268 ...  45.749268 
IDL> lat - (findgen(10)*y_res + y_res * 0.5) + (findgen(10)*y_res + y_res * 0.5) 
    45.749001  45.749001  45.749001  45.749001 ... 

二つの結果が異なる値を持っている理由上記のコードは、私は知らないのと同じように? 私のIDLバージョンはENVIパッケージの8.3です。

+0

は、2つの結果が異なる値を持っています操作の順序。あなたの2つのコマンドは同等ではありません。 – TriskalJM

答えて

2

TriskalJMが正しい。 2番目の式でカッコを見ると、用語を別々にグループ化しています。これは常には、丸め誤差のために、任意のコンピュータ言語での浮動小数点演算で起こります。あなたはより多くの情報が必要な場合、あなたは相談できます。その間に http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

を、私はあなたが倍精度に切り替えることをお勧めします:あなたが変更しているので

lat - dindgen(10)*y_res + y_res * 0.5 + dindgen(10)*y_res + y_res * 0.5 
関連する問題