|
Posted by mpaine on 11/20/06 22:53
So is PRINT CAST(1 AS float)/(CAST(1 AS float)+CAST(26 AS float)) the
best way to get the correct answer for PRINT 1/(1+26)?
- Michael
Roy Harvey wrote:
> If any one of the operators had a decimal point then the results would
> have had a decimal point. Performaing pure integer arithmatic, as in
> the original example, returns an integer result.
>
> Roy Harvey
> Beacon Falls, CT
>
> On 20 Nov 2006 12:57:04 -0800, mpaine@htxml.com wrote:
>
> >Ok, I just figured it out:
> >
> >
> >
> >DECLARE @A int
> >DECLARE @B int
> >DECLARE @C float
> >
> >SET @A = 1
> >SET @B = 26
> >SET @C = CAST(@A AS float) / (CAST(@A AS float) + CAST(@B AS float))
> >PRINT @C
> >
> >This is unlike any other programming language that I have used before
> >-- so strange.
> >
> >mpaine@htxml.com wrote:
> >> Why does this T-SQL round incorrectly?
> >>
> >> PRINT 1/(1+26)
> >>
> >> when it should be 0.037037037?
> >>
> >> Thanks,
> >> Michael
[Back to original message]
|