lib/libbcmath.js
function() {
        this.n_sign = null; // sign
        this.n_len = null;  /* (int) The number of digits before the decimal point. */
        this.n_scale = null; /* (int) The number of digits after the decimal point. */
        //this.n_refs = null; /* (int) The number of pointers to this number. */
        //this.n_text = null; /* ?? Linked list for available list. */
        this.n_value = null;  /* array as value, where 1.23 = [1,2,3] */
        this.toString = function() {
            var r, tmp;
            tmp=this.n_value.join('');

            // add minus sign (if applicable) then add the integer part
            r = ((this.n_sign == libbcmath.PLUS) ? '' : this.n_sign) + tmp.substr(0, this.n_len);

            // if decimal places, add a . and the decimal part
            if (this.n_scale > 0) {
                r += '.' + tmp.substr(this.n_len, this.n_scale);
            }
            return r;
        };

        this.setScale = function(newScale) {
            while (this.n_scale < newScale) {
                this.n_value.push(0);
                this.n_scale++;
            }
            while (this.n_scale > newScale) {
                this.n_value.pop();
                this.n_scale--;
            }
            return this;
        }

    }
function() {
        this.n_sign = null; // sign
        this.n_len = null;  /* (int) The number of digits before the decimal point. */
        this.n_scale = null; /* (int) The number of digits after the decimal point. */
        //this.n_refs = null; /* (int) The number of pointers to this number. */
        //this.n_text = null; /* ?? Linked list for available list. */
        this.n_value = null;  /* array as value, where 1.23 = [1,2,3] */
        this.toString = function() {
            var r, tmp;
            tmp=this.n_value.join('');

            // add minus sign (if applicable) then add the integer part
            r = ((this.n_sign == libbcmath.PLUS) ? '' : this.n_sign) + tmp.substr(0, this.n_len);

            // if decimal places, add a . and the decimal part
            if (this.n_scale > 0) {
                r += '.' + tmp.substr(this.n_len, this.n_scale);
            }
            return r;
        };

        this.setScale = function(newScale) {
            while (this.n_scale < newScale) {
                this.n_value.push(0);
                this.n_scale++;
            }
            while (this.n_scale > newScale) {
                this.n_value.pop();
                this.n_scale--;
            }
            return this;
        }

    }
function ( ) { this . n_sign = null ; // sign this . n_len = null ; /* (int) The number of digits before the decimal point. */ this . n_scale = null ; /* (int) The number of digits after the decimal point. */ //this.n_refs = null; /* (int) The number of pointers to this number. */ //this.n_text = null; /* ?? Linked list for available list. */ this . n_value = null ; /* array as value, where 1.23 = [1,2,3] */ this . toString = function ( ) { var r , tmp ; tmp = this . n_value . join ( '' ) ; // add minus sign (if applicable) then add the integer part r = ( ( this . n_sign == libbcmath . PLUS ) ? '' : this . n_sign ) + tmp . substr ( 0 , this . n_len ) ; // if decimal places, add a . and the decimal part if ( this . n_scale > 0 ) { r += '.' + tmp . substr ( this . n_len , this . n_scale ) ; } return r ; } ; this . setScale = function ( newScale ) { while ( this . n_scale < newScale ) { this . n_value . push ( 0 ) ; this . n_scale ++ ; } while ( this . n_scale > newScale ) { this . n_value . pop ( ) ; this . n_scale -- ; } return this ; } }
default scale 
Basic number structure
default scale Basic number structure