static expandNumber()

in src/number/numberFormatter.ts [3:64]


    static  expandNumber( number_, precision, formatInfo ) {
        let groupSizes = formatInfo.groupSizes,
            curSize = groupSizes[ 0 ],
            curGroupIndex = 1,
            factor = Math.pow( 10, precision ),
            rounded = Math.round( number_ * factor ) / factor;

        if ( !isFinite(rounded) ) {
            rounded = number_;
        }
        number_ = rounded;

        let numberString = number_ + "",
            right = "",
            split = numberString.split( /e/i ),
            exponent = split.length > 1 ? parseInt( split[1], 10 ) : 0;
        numberString = split[ 0 ];
        split = numberString.split( "." );
        numberString = split[ 0 ];
        right = split.length > 1 ? split[ 1 ] : "";

        let l;
        if ( exponent > 0 ) {
            right = NumberFormatter.zeroPad( right, exponent, false );
            numberString += right.slice( 0, exponent );
            right = right.substr( exponent );
        }
        else if ( exponent < 0 ) {
            exponent = -exponent;
            numberString = NumberFormatter.zeroPad( numberString, exponent + 1 );
            right = numberString.slice( -exponent, numberString.length ) + right;
            numberString = numberString.slice( 0, -exponent );
        }

        if ( precision > 0 ) {
            right = formatInfo[ "." ] +
                ( (right.length > precision) ? right.slice(0, precision) : NumberFormatter.zeroPad(right, precision) );
        }
        else {
            right = "";
        }

        let stringIndex = numberString.length - 1,
            sep = formatInfo[ "," ],
            ret = "";

        while ( stringIndex >= 0 ) {
            if ( curSize === 0 || curSize > stringIndex ) {
                return numberString.slice( 0, stringIndex + 1 ) + ( ret.length ? (sep + ret + right) : right );
            }
            ret = numberString.slice( stringIndex - curSize + 1, stringIndex + 1 ) + ( ret.length ? (sep + ret) : "" );

            stringIndex -= curSize;

            if ( curGroupIndex < groupSizes.length ) {
                curSize = groupSizes[ curGroupIndex ];
                curGroupIndex++;
            }
        }

        return numberString.slice( 0, stringIndex + 1 ) + sep + ret + right;
    }