...perhaps a NEAR function could be added; as a config file or compile-time
option, you could define an accuracy range. Say,
./config --with-epsilon=0.0001
(if memory of my numerical analysis classes serves, the 'fudge factor' was
conventionally symbolized by epsilon; I suppose you could make it
--with-fudge, but this ain't no bakery) so that
select 1.0 near 1.00009 => 1
and
select 1.0 near 0.9995 => 0
The default would be current behavior (epsilon=0).
This would avoid statements like
select * where x > 0.99999999 and x < 1.00000001
...just my too sense -
-steve
At 02:33 PM 2/1/02 , James Montebello <[EMAIL PROTECTED]> wrote:
>Yes, but you need to use the decimal (fixed-point) type, not the floating
>point type. Any program that's directly comparing FP numbers for exact
>matches is simply wrong, and certainly won't be portable, even if it works
>in one particular environment. Fixed-point numbers CAN be compared for
>exact matches, and they can include fractional values.
>
>james montebello
>
>On Fri, 1 Feb 2002, Jim Dickenson <[EMAIL PROTECTED]> wrote:
>
> > Am I to assume that based on your response that one should never use a
> float
> > field type if you ever want to select the data?
> >
> > This causes a big problem for the way MyODBC 3.51 has been implemented. I
> > was actually debugging a problem I had in MyODBC when I ran across
> this. The
> > way MyODBC works is that is generates a native SQL statement. In my
> case the
> > statement was:
> >
> > UPDATE `junk` SET `record`= 91 WHERE record=1 AND title='This is item one'
> > AND num1=12.3 AND num2=134 AND num3=0.100 AND code='abc' AND
> > sdate='1991-11-30' AND stime='17:45:00' LIMIT 1
> >
> > Since the float compare did not work (field num1), the record I wanted
> > changed did not get changed.
> >
> > The way our software works is that it fixes the variable number (num1) to
> > the number of decimals in the constant number before the compare is done.
> > There are ways for compares to be programmed so they do work. We are using
> > computers after all.
> >
> >
> > On 2/1/2002 2:06 PM, "Gerald Clark" <[EMAIL PROTECTED]>
> > wrote:
> >
> > > A floating point number can never be equal to 12.3.
> > > It can be close, and with rounding display as 12.3, but it
> > > won't actually be equal to 12.3.
> > > Use a decimal type instead.
> > >
> > >
> > > Jim Dickenson wrote:
> > >
> > >> I am running mysql Ver 11.15 Distrib 3.23.47, for pc-linux-gnu (i686)
> > >> installed from a binary RPM file. This is using RedHat Linux 7.2.
> > >>
> > >> I have a table described as:
> > >> mysql> describe junk;
> > >> +--------+---------------+------+-----+---------+-------+
> > >> | Field | Type | Null | Key | Default | Extra |
> > >> +--------+---------------+------+-----+---------+-------+
> > >> | record | decimal(3,0) | YES | | NULL | |
> > >> | title | varchar(250) | YES | | NULL | |
> > >> | num1 | float | YES | | NULL | |
> > >> | num2 | decimal(6,0) | YES | | NULL | |
> > >> | num3 | decimal(10,3) | YES | | NULL | |
> > >> | code | char(3) | YES | | NULL | |
> > >> | sdate | date | YES | | NULL | |
> > >> | stime | time | YES | | NULL | |
> > >> +--------+---------------+------+-----+---------+-------+
> > >> 8 rows in set (0.00 sec)
> > >>
> > >> It has the following data:
> > >> mysql> select record,num1 from junk;
> > >> +--------+----------+
> > >> | record | num1 |
> > >> +--------+----------+
> > >> | 1 | 12.3 |
> > >> | 2 | 17.785 |
> > >> | 3 | 138.981 |
> > >> | 4 | -34.12 |
> > >> | 5 | -12.7365 |
> > >> | 6 | -0.34 |
> > >> +--------+----------+
> > >> 6 rows in set (0.00 sec)
> > >>
> > >> The following command does not update the row I would like it to:
> > >> mysql> update junk set num1=12.4 where num1=12.3;
> > >> Query OK, 0 rows affected (0.01 sec)
> > >> Rows matched: 0 Changed: 0 Warnings: 0
> > >>
> > >>
> > >> Can I get some insight as to what the problem might be?
> > >>
> > >> Thanks,
> > >>
+------------------------------------------------------------------------+
| Steve Edberg [EMAIL PROTECTED] |
| Database/Programming/SysAdmin (530)754-9127 |
| University of California, Davis http://pgfsun.ucdavis.edu/ |
+---------------------- Gort, Klaatu barada nikto! ----------------------+
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php