> > Note that if you write, say, > > set numericcol = numericcol * 3.14159; > > my proposal would do the "right thing" since the constant would be typed > > as numeric to start with and would stay that way. To do what you want > > with a float variable, it'd be necessary to write > > set numericcol = numericcol * float4col::numeric;
Yes, that is the case where the new behavior would imho not be good (but you say spec compliant). I loose precision even though there is room to hold it. > > which is sort of ugly; but no uglier than > > set float4col = float4col * numericcol::float4; Informix does the calculations in numeric, and then converts the result if no casts are supplied (would do set float4col = float4(float4col::numeric * numericcol)). Would be interesting what others do ? Test script: create table atab (a decimal(30), b smallfloat, c decimal(30), d smallfloat); insert into atab values (1.000000000000001,100000.0,0, 0); update atab set c=a*b-b, d=a*b-b where 1=1; select a*b-b, b, c,d from atab; (expression) b c d 1e-10 100000.0000000 1e-10 1e-10 I hope this test is ok ? It still seems to me, that numeric should be the preferred type, and not float8. Andreas ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]