Re: comparing numbers using WHERE doesn't work [message #25363 is a reply to message #25243] |
Tue, 05 June 2001 06:18   |
Martin Schultz
Messages: 515 Registered: August 1997
|
Senior Member |
|
|
"Miklos Z. Kiss" <mzkiss@unity.ncsu.edu> writes:
> Hi folks:
> I have noticed a strange occurence when I try to compare a number with
> all the elements of an array. I'll show my situation in an example.
> Consider the following array:
> a = .
> Let, x = 2.2000, y = 2.4000
> So, I want to find which elements of a match up with x and y.
> Naturally, I do the following:
>
>
> index0 = WHERE(a EQ x)
> index0 = index ; convert from 1-D array to single integer.
> index1 = WHERE(a EQ y)
> index1 = index
>
>
> So, when I execute, I may get the following:
> PRINT, index0
> 2
>
> PRINT, index1
> -1
>
> The output clearly tells me that x occurs at a and that y does not exist
> in a at all. By inspection, IDL should return the value 4. Does anyone
> have any idea why this happens? Thanks,
>
> Mik Kiss
You must have a strange computer system ;-). The above should normally
work, if (1) you are positively sure that all number are single
precision or all numbers are double, (2) you didn't get 2.4000 as a
result of some computation but explicitely wrote it into the vector.
But these 2 conditions show you excatly why you shouldn't use an EQ
comparison on floating point numbers.
Cheers,
Martin
--
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[
[[ Dr. Martin Schultz Max-Planck-Institut fuer Meteorologie [[
[[ Bundesstr. 55, 20146 Hamburg [[
[[ phone: +49 40 41173-308 [[
[[ fax: +49 40 41173-298 [[
[[ martin.schultz@dkrz.de [[
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[
|
|
|