Question

I recently came across this apparent inconsistency when going through someone's IDL code:

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

Could anyone explain if there is a logic behind the behaviour in the third loop.

The IDL version used is 8.2.0.

(Note that my own code would stick to using integers in a for loop, and definitely after finding this.)

Était-ce utile?

La solution

This might be a bug in IDL 8.2 - when I run the commands in version 8.2.1 I get the same behaviour as you. When I run them on a different computer with version 8.0 I get the expected behaviour, i.e. each command gives the same output. The inbuilt IDL help certainly suggests that they should all give the same output.

Autres conseils

This definitely has to do with floating point accuracy. What is recommended in IDL is not create explicit floating point loops, but use an integer loop where in the body the floating point value is derived from.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top