2016-04-05 33 views
0

IDL ile bazı görüntü işleme yapıyorum ve yüksek hassasiyet gerektiriyor. Ama meslektaşının program hata ayıklama, ben garip bazı şey bulmak:IDL'nin aynı ifadede neden farklı değeri var?

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 ... 

iki sonuç değeri farklı neden Yukarıdaki kod, bilmiyorum gibi? IDL sürümüm ENVI paketi ile 8.3.

+0

iki sonuç değiştirmekte çünkü farklı değerlere sahip operasyonların sırası. İki komutunuz eşdeğer değil. – TriskalJM

cevap

2

TriskalJM doğrudur. Parantezinize ikinci ifadede bakarsanız, terimlerinizi farklı şekilde gruplandırıyorsunuz. Bu, her zaman, herhangi bir bilgisayar dilinde kayan nokta aritmetiği ile sonuçlanacaktır. Eğer daha fazla bilgi istiyorsanız, başvurabileceğiniz olabilir: arada http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

, ben çift hassasiyet için ona geçiş yapmanızı öneriyoruz:

lat - dindgen(10)*y_res + y_res * 0.5 + dindgen(10)*y_res + y_res * 0.5 
İlgili konular