0

私は最近、誰かの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

3番目のループの動作の背後にロジックがあるかどうか誰かが説明できますか?

使用されるIDLバージョンは8.2.0です。

(私自身のコードは、forループで整数を使用することに固執することに注意してください。間違いなく、これを見つけた後です。)

4

2 に答える 2

0

これは間違いなく浮動小数点の精度と関係があります。IDLで推奨されるのは、明示的な浮動小数点ループを作成することではなく、本体内で浮動小数点値が派生する整数ループを使用することです。

于 2013-02-26T21:22:42.030 に答える
0

これはIDL8.2のバグである可能性があります。バージョン8.2.1でコマンドを実行すると、同じ動作が発生します。バージョン8.0の別のコンピューターで実行すると、期待どおりの動作が得られます。つまり、各コマンドで同じ出力が得られます。組み込みのIDLヘルプは、それらがすべて同じ出力を提供する必要があることを確かに示唆しています。

于 2013-04-17T03:18:36.197 に答える