<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">/**
 * @class pwbNumber
 * @description Met Ã&nbsp; disposition des methode gÃ©nÃ©rique sur les numbers
 *
 * @returns {pwbNumber}
 */
function pwbNumber() {
    var _parentClass = this;

    /**
     * Remplacent la virgule par un point et convertie en float
     *
     * @param {String} string
     * @returns {Float}
     */
    this.parseFloat = function (string) {
        if (!string || typeof (string) == 'undefined') {
            string = 0;
        }
        string = String(string);
        string = string.replace(/ /g, '');
        string = string.replace(/,/g, '.');
        return parseFloat(string);
    };

    /**
     * Arrondi un nombre en fonction du mode.
     *
     * @param {String|Number} number
     * @param {Integer} [nbDec] &lt;p&gt;Nombre de dÃ©cimale. Par defaut 0&lt;/p&gt;
     * @param {String} [mode] &lt;p&gt;Type d'arrondi. Valeurs dispo :
     *                      &lt;table&gt;
     *                          &lt;tr&gt;&lt;td&gt;&lt;b&gt;''&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Arondi standard&lt;/td&gt;&lt;td&gt;(Defaut)&lt;/td&gt;&lt;/tr&gt;
     *                          &lt;tr&gt;&lt;td&gt;&lt;b&gt;'up'&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Arondi suppÃ©rieur&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
     *                          &lt;tr&gt;&lt;td&gt;&lt;b&gt;'down'&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Arondi infÃ©rieur&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
     *                      &lt;/table&gt;&lt;/p&gt;
     *
     * @returns {Number}
     */
    this.round = function (number, nbDec, mode) {
        var multi = 1;
        number = _parentClass.parseFloat(number);
        if (!nbDec || typeof (nbDec) == 'undefined') {
            nbDec = 0;
        }
        if (!mode || typeof (mode) == 'undefined' || (mode != 'up' &amp;&amp; mode != 'down')) {
            mode = '';
        }
        for (var i = 0; i &lt; nbDec; i++) {
            multi = multi + '0';
        }
        multi = parseInt(multi);
        if (mode == 'up') {
            return Math.ceil(number * multi) / multi;
        } else if (mode == 'down') {
            return Math.floor(number * multi) / multi;
        } else {
            return Math.round(number * multi) / multi;
        }
    };

    /**
     * Arrondi suppÃ©rieur
     *
     * @param {String|Number} number
     * @param {Integer} [nbDec] &lt;p&gt;Nombre de dÃ©cimale. Par defaut 0&lt;/p&gt;
     * @returns {Number}
     */
    this.roundUp = function (number, nbDec) {
        return _parentClass.round(number, nbDec, 'up');
    };

    /**
     * Arrondi infÃ©rieur
     *
     * @param {String|Number} number
     * @param {Integer} [nbDec] &lt;p&gt;Nombre de dÃ©cimale. Par defaut 0&lt;/p&gt;
     * @returns {Number}
     */
    this.roundDown = function (number, nbDec) {
        return _parentClass.round(number, nbDec, 'down');
    };

    /**
     * Format le nombre
     *
     * @param {String|Number} number
     * @param {Integer} [decimals]
     * @param {String} [decPoint]
     * @param {String} [thousandsSep]
     * @returns {String}
     */
    this.format = function (number, decimals, decPoint, thousandsSep) {
        number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
        var n = !isFinite(+number) ? 0 : +number,
            prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
            sep = (typeof thousandsSep === 'undefined') ? '' : thousandsSep,
            dec = (typeof decPoint === 'undefined') ? '.' : decPoint,
            s = '',
            toFixedFix = function (n, prec) {
                var k = Math.pow(10, prec);
                return '' + (Math.round(n * k) / k).toFixed(prec);
            };

        // Fix for IE parseFloat(0.55).toFixed(0) = 0;
        s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
        if (s[0].length &gt; 3) {
            s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
        }
        if ((s[1] || '').length &lt; prec) {
            s[1] = s[1] || '';
            s[1] += new Array(prec - s[1].length + 1).join('0');
        }
        return s.join(dec);
    };

    /**
     * Force le rendu en float d'une valeur avec des dÃ©cimales.
     *
     * @param {object} element
     * @param {int}    decimals
     *
     * return {bool}
     */
    this.forceFloatDisplay = function (element, decimals) {
        var value = element.val();

        var num = parseFloat(value.replace(",","."));

        if (isNaN(num)) {
            return false;
        }

        element.val(num.toFixed(decimals));

        return true;
    };
}
</pre></body></html>