[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: comparing numbers using WHERE doesn't work
- Subject: Re: comparing numbers using WHERE doesn't work
- From: Paul Woodford <cpwoodford(at)spamcop.net>
- Date: Sat, 02 Jun 2001 17:10:59 -0400
- Newsgroups: comp.lang.idl-pvwave
- Organization: Posted via Supernews, http://www.supernews.com
- Posted-And-Mailed: yes
- References: <9fbduu$ojm$1@uni00nw.unity.ncsu.edu>
- User-Agent: MT-NewsWatcher/3.1 (PPC)
- Xref: news.doit.wisc.edu comp.lang.idl-pvwave:25192
In article <9fbduu$ojm$1@uni00nw.unity.ncsu.edu>,
"Miklos Z. Kiss" <mzkiss@unity.ncsu.edu> wrote:
> 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 = [2.0000, 2.1000, 2.2000, 2.3000, 2.4000, 2.5000, 2.6000].
> 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)
I don't know if this is the problem, but using EQ to compare floating
point numbers is generally not a good idea. A better way to compare
would be WHERE(abs(a-x) LT 2*epsilon), where epsilon is the floating
point precision returned by machar().
Paul