For loop 循环不一致性的IDL

For loop 循环不一致性的IDL,for-loop,idl-programming-language,For Loop,Idl Programming Language,我最近在查看某人的IDL代码时遇到了这种明显的不一致性: IDL> for i=0.,1.9,1. do print,i 0.00000 1.00000 IDL> for i=0.,1.9,1 do print,i 0.00000 1.00000 IDL> for i=0.,1.9 do print,i 0.00000 1.00000 2.00000 有人能解释一下第三个循环中的行为背后是否有

我最近在查看某人的IDL代码时遇到了这种明显的不一致性:

IDL> for i=0.,1.9,1. do print,i
      0.00000
      1.00000
IDL> for i=0.,1.9,1 do print,i
      0.00000
      1.00000
IDL> for i=0.,1.9 do print,i
      0.00000
      1.00000
      2.00000
有人能解释一下第三个循环中的行为背后是否有逻辑吗

使用的IDL版本是8.2.0


(请注意,我自己的代码会坚持在for循环中使用整数,并且在找到它之后肯定会使用整数。)

这肯定与浮点精度有关。IDL中推荐的不是创建显式浮点循环,而是使用一个整数循环,其中浮点值是从中派生出来的。

这可能是IDL 8.2中的一个错误-当我在版本8.2.1中运行命令时,我会得到与您相同的行为。当我在版本为8.0的不同计算机上运行它们时,我得到了预期的行为,即每个命令都给出相同的输出。内置的IDL帮助当然建议它们都应该给出相同的输出。

对不起,我不知道浮点精度如何解释这一点。因为无论是第一个循环还是第二个循环都应该显示相同的行为,因为增量被隐式设置为1(并提升为float)。一些谷歌搜索者认为这是最有可能的怀疑。我最终将其放在IDL Exelis论坛上,虽然有点令人失望,但看起来它可以被确认为一个bug。感谢您的交叉检查和提示版本检查。