Doug McNaught <[EMAIL PROTECTED]> writes:
> Oleg Bartunov <[EMAIL PROTECTED]> writes:
>> May be I miss something, but seems there is a problem with float4
>> in 7.2.3 and 7.3RC1 (6.53 works fine):
>> 
>> test=# create table t ( a float4);
>> CREATE TABLE
>> test=# insert into t values (0.1);
>> INSERT 32789 1
>> test=# select * from t where a=0.1;
>> a
>> ---
>> (0 rows)


> I'm guessing this is because 0.1 is not directly representable as a
> binary floating point number, and literal floating constants are
> float8 not float4, and 0.1::float4 != 0.1::float8.

Right.

I think that this particular form of the problem will go away in 7.4.
Currently, "a = 0.1" is resolved as float4=float8, and there's no way
for the float4 approximation of 0.1 to exactly equal the float8
approximation of it.  However, if we eliminate cross-datatype
comparison operators as I've proposed, the comparison should be resolved
as float4 = float4 and it would work.

Nonetheless, expecting exact equality tests to succeed with float values
is generally folly.  I really do not believe the claim that this worked
in 6.5.3.

                        regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly

Reply via email to