Saturday, 18 April 2015

JavaScript Number

Most of this information is available on the net. I have compiled into a single document for easy reading.

JavaScript code is after the descriptions.

 

Is Integer

var isInteger = number.isInteger(value);

 

Is Number - including decimal

var isNumber = number.isNumber(value);

 

Is Percentage

var isPercentage = number.isPercentage(value);

 

Format Numeric

var num = number.formatNumeric(inputNumber, precision)

  • inputNumber: value
  • precision: decimal places

 

Number.js

var number = {
    isInteger: function (value) {
        var expression = /^[0-9]+$/;
        return (expression.test(value));
    },
    isNumber: function (value) {  //integer and floats both
        //var expression = /^[0-9]*\.?[0-9]/;
        //return (expression.test(value));
        return (!isNaN(value));
    },
    isPercentage: function (value) {
        // cannot be greater than 100
        // 15., 15.000, 100.01 is not valid,
        // 15.0, 15.00,  100, 100.0, 100.00 is valid,
       
        if (value == "" || value == 'undefined' || !number.isNumber(value))
            return false;

        var re = /^((0|[1-9]\d?)(\.\d{1,2})?|100(\.00?)?)$/;
        return re.test(value);
    },
    formatNumeric: function (inputNumber, precision) {
        var blnNeg = false;
        var strReturn = '';
        if (precision == null || precision == 'undefined') precision = 0;
        if (number.isNumber(inputNum))
            inputNum = parseFloat(inputNum).toFixed(precision);
        else
            inputNum = '';

        var num = '' + inputNum;
        if (num == '') return '';

        /*
        // First check for decimal point.
        if(num.indexOf(".") == -1) {
        var strLeft = new String(num.substring(0, num.length));
        var strRight = "00000000000000000000000".substring(0,precision);
        }
        else {
        // Decimal point exists, separate right and left
        pos = num.indexOf(".");
        var strLeft = num.substring(0, pos);
        if (strLeft == "") strLeft = "0";
        var strRight = num.substring(pos+1);           
        // Correct precision to the desired level.
        // Adding zeros, or truncating where necessary
        strRight += '0000000000000000000000';
        strRight = strRight.substring(0,precision);
        }
        */

        //Puled the following 4 lines out of the above else
        pos = num.indexOf(".");
        var strLeft = num.substring(0, pos);
        if (strLeft == "") strLeft = "0";
        var strRight = num.substring(pos + 1);

        // Add commas to the left side.
        var ctr = 0;
        var strTmp = "";
        for (var i = strLeft.length - 1; i >= 0; i--) {
            ctr += 1;
            if (ctr == 4) {
                strTmp += "," + strLeft.charAt(i);
                ctr = 1;
            }
            else
                strTmp += strLeft.charAt(i);
        }

        strLeft = "";
        for (var i = strTmp.length - 1; i >= 0; i--) {
            strLeft += strTmp.charAt(i);
        }

        //Taking care of - at first place and , following it
        if (strLeft.indexOf("-,") != -1 || strLeft.indexOf("-") != -1) {
            blnNeg = true;
            strLeft = strLeft.replace("-,", "(");
            strLeft = strLeft.replace("-", "(");
        }

        if (precision == 0) strReturn = strLeft;
        else strReturn = strLeft + '.' + strRight

        if (blnNeg == true) strReturn += ")";

        return strReturn;
    }

};