为什么IDL在同一个表达式中有不同的值?

时间:2016-04-05 15:59:01

标签: idl-programming-language envi

我正在用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 ...

就像上面的代码一样,我不知道为什么这两个结果有不同的价值? 使用ENVI包我的IDL版本是8.3。

1 个答案:

答案 0 :(得分:2)

TriskalJM是对的。如果您在第二个表达式中查看括号,则表示您的术语分组不同。由于舍入错误,这将在任何计算机语言中使用浮点运算始终。如果您想了解更多信息,可以咨询: 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