【问题标题】:IDL for loop inconsistency循环不一致的 IDL
【发布时间】:2013-02-12 11:18:58
【问题描述】:

我最近在查看某人的 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 循环中使用整数,而且肯定是在找到这个之后。)

【问题讨论】:

    标签: for-loop idl-programming-language


    【解决方案1】:

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

    【讨论】:

    • 我终于把它放到了 IDL Exelis 论坛上,虽然 answer 有点令人失望,但看起来可以确认它是一个错误。感谢您对版本检查进行交叉检查和提示。
    【解决方案2】:

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

    【讨论】:

    • 抱歉,我不明白浮点精度如何解释这一点。因为那么第一个或第二个循环应该显示相同的行为,因为增量被隐式设置为 1(并提升为浮点数)。
    • 一些谷歌搜索表明这是最有可能的嫌疑人。
    猜你喜欢
    • 2011-05-11
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多