Results 1 to 5 of 5

Thread: [RESOLVED] Data Type Problem

  1. #1

    Thread Starter
    Member
    Join Date
    May 2006
    Posts
    33

    Resolved [RESOLVED] Data Type Problem

    Hi,
    When I multiply a variable of integer data type and a variable of single data type, the result isn't always the right one.
    For example - 0.02 * 5 isn't 0.1, but 0.099999994.
    Why does this happen? I've tried using double as well, but it's the same problem.

  2. #2
    Fanatic Member
    Join Date
    Aug 2006
    Location
    Chicago, IL
    Posts
    514

    Re: Data Type Problem

    you will want to format it for display. I just do this:

    Format(cDbl(variable * variable), "##0.0000")
    Warren Ayen
    Senior C# Developer
    DLS Software Studios (http://www.dlssoftwarestudios.com/)

    I use Microsoft Visual Studio 2005, 2008, working with Visual Basic and Visual C#
    Hey! If you like my post, or I solve your issue, please Rate Me!

  3. #3
    MS SQL Powerposter szlamany's Avatar
    Join Date
    Mar 2004
    Location
    Connecticut
    Posts
    18,263

    Re: Data Type Problem

    Floating point values are not supposed to be accurate.

    If you are looking for accuracy do not ever use them.

    We do financial and payroll systems here - we never ever use float.

    *** Read the sticky in the DB forum about how to get your question answered quickly!! ***

    Please remember to rate posts! Rate any post you find helpful - even in old threads! Use the link to the left - "Rate this Post".

    Some Informative Links:
    [ SQL Rules to Live By ] [ Reserved SQL keywords ] [ When to use INDEX HINTS! ] [ Passing Multi-item Parameters to STORED PROCEDURES ]
    [ Solution to non-domain Windows Authentication ] [ Crazy things we do to shrink log files ] [ SQL 2005 Features ] [ Loading Pictures from DB ]

    MS MVP 2006, 2007, 2008

  4. #4
    Super Moderator Shaggy Hiker's Avatar
    Join Date
    Aug 2002
    Location
    Idaho
    Posts
    40,106

    Re: Data Type Problem

    Try using decimal rather than single.

    In general, the problem is that a single/double is the number out to a certain precision. Since the number is binary, not all decimal fractions can be accurately represented in the number of bytes allocated to the number. 0.1 is one tenth, which is a concept hard to capture in a binary system. The way around this is to approximate it. The result you got is 0.1 when you round it off, back to several decimal places, so it is correct....unless you use the entire precision of the number.

    There was a lengthy explanation of how fractional numbers are represented in a binary system in the Classic VB forum a few years back. It was thorough, detailed, and probably more than anyone wanted to know, but it has disappeared into the mist of time now.

    The decimal type takes care of this better, but you should keep in mind that as long as you are using a floating point number, things like this can happen. Formatting is a good way to display things correctly.
    My usual boring signature: Nothing

  5. #5

    Thread Starter
    Member
    Join Date
    May 2006
    Posts
    33

    Re: [RESOLVED] Data Type Problem

    Thanks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width