Results 1 to 11 of 11

Thread: 3 decimal places

Hybrid View

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

    Re: 3 decimal places

    VB6 has the currency datatype - which is just a LONG datatype with an implied decimal point - it allows for 4 digits to the right of the decimal point...

    Although it's been a few years since I've worked in VB6 solely...

    *** 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

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

    Re: 3 decimal places

    It is quite easy to IMPLY a decimal point in a LONG integer - thus getting non-float accuracy. IMPLIED decimal points have been around since the big COBOL days of the 1950's.

    VB6 does it with the CURRENCY datatype

    Currency is a fixed-point data type, as opposed to thefloating-point Single. In other words, it is always accurate to a specificnumber of decimal places, four in this case. While the Single type canrepresent many more decimal places, these are not needed in Currencycalculations and, in fact, can introduce rounding errors. These errors aresmall but can have an effect on overall accuracy.

    The Currency data type is actually an integer typeinternally. In use, it is scaled by a factor of 10,000 to give four digits tothe right of the decimal point. It permits up to 15 digits to the left of thedecimal point, resulting in a range of approximately -922,337,000,000,000 to+922,337,000,000,000. An individual type Currency variable takes up 8 bytes ofmemory, compared to 4 bytes for Single
    Here's a function in JAVASCRIPT I wrote to do it in a browser - which has no DECIMAL or CURRENCY datatypes!

    It all comes down to this simple line of code

    intMoney = parseInt(strMoney.replace(".", ""), 10);


    Code:
    function parseMoney(strMoney) {
        var intMoney = parseInt(0, 10);
        var intDecimal = 0;
        var intLength = 0;
        if (strMoney.length != 0) {
            strMoney = strMoney.replace(/,/g, "").replace("$", "");
            intDecimal = strMoney.indexOf(".");
            intLength = strMoney.length;
            if (intDecimal == -1) {
                strMoney = strMoney + ".00";
            } else {
                if ((intDecimal + 3) != intLength) {
                    if (intLength == (intDecimal + 1)) {
                        strMoney = strMoney + "00";
                    } else if (intLength == (intDecimal + 2)) {
                        strMoney = strMoney + "0";
                    } else {
                        strMoney = strMoney.substring(0, intDecimal + 3);
                    }
                }
            }
            intMoney = parseInt(strMoney.replace(".", ""), 10);
        }
        return intMoney;
    }
    
    function parseCurrency(intMoney) {
        var strMoney = "";
        strMoney = String(intMoney);
        var blnIsNeg = false;
        if (strMoney.substring(0, 1) == "-") {
            blnIsNeg = true;
            strMoney = strMoney.substring(1, strMoney.length);
        }
        var intLength = strMoney.length;
        if (intLength < 3) {
            strMoney = ("000" + strMoney).substring(intLength, intLength + 3); //("00" + strMoney).substring(0, 2);
            intLength = 3;
        }
        strMoney = ((blnIsNeg) ? "-" : "") + addCommas(strMoney.substring(0, intLength - 2)) + "." + strMoney.substring(intLength - 2);
        return strMoney;
    }

    *** 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

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