Hi,

>I beg to differ at least with SQL 2000

You can beg all you want, but FLOAT is the wrong data type to use. ;-)

If you don't believe me, believe Microsoft. Read the SQL Server Documentation:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/acdata/ac_8_con_03_6mht.asp


>I just ran a test
>Data Type       Entered         Result
>Money           20.30           20.3
>Decimal -prec2   20.30           2
>Decimal - prec 4 20.30           2
>Float            20.30              20.30

Clearly, something is wrong with your configuration. No programmer on earth 
should accept the fact that entering "20.30" returns "2".

And I know what the problem is. Everyone can make mistakes, including me! I 
said "precision of 2". I meant "scale of 2". Precision is the total number 
of bytes (digits) to use to store the column value. Scale is the number of 
digits to the *right of the decimal point*. A column's Scale must always be 
less than its Precision.

Create this table in SQL Server:

CREATE TABLE [dbo].[DataTypes] (
         [aMoney] [money] NULL ,
         [aFloat] [float] NULL ,
         [aDecimal2] [decimal](18, 2) NULL ,
         [aDecimal4] [decimal](18, 4) NULL
)

Using the Enterprise Manager, enter 20.30 as the value for each column.

Create a new ODBC data source pointing to the database. *MAKE SURE YOU DO 
NOT CHANGE THE ANSI PADDINGS SETTING WHEN SETTING UP THE DATA SOURCE.*

Create a new TAF. Add one Direct DBMS action. Enter:

SELECT * FROM DATATYPES

in the SQL Query. Enter <@VAR resultSet> in the Results HTML. Run the TAF 
from your browser. Here's what I get:

20.3000 20.300000000000001      20.30   20.3000

Notice the trailing 1 on the float column value. I'll say once again (in 
case you didn't believe Bill's minions) Floats are *approximate*!


>USE FLOAT!!!

No, do not use float for this type of data.

If the issue is the trailing 0, then it is a padding issue. Using the wrong 
data type as a "fix" for improper padding is like using a hammer to drive 
in a screw.

Eric


________________________________________________________________________
TO UNSUBSCRIBE: send a plain text/US ASCII email to [EMAIL PROTECTED]
                with unsubscribe witango-talk in the message body

Reply via email to