//@include lib_Class.js /** * Utils for handling decimals. * * Uses decimal.js-light. * Please refer to the official documentation of decimal.js-light for further information: * http://mikemcl.github.io/decimal.js-light/ * * @eloall * * @author MW, ELO Digital Office GmbH * * @requires moment * @requires decimal-light */ sol.define("sol.common.DecimalUtils", { singleton: true, /** * Configure Decimals * @param {Object} config Configuration */ configureDecimals: function (config) { config = config || { precision: 20, rounding: Decimal.ROUND_HALF_UP }; Decimal.config(config); }, /** * Returns a Decimal * @param {String} value Value * @param {Object} params parameters * @param {String} params.type Type * @param {String} params.thousandsSeparator Thousands separator * @param {String} params.decimalSeparator Decimal separator * @return {Decimal} */ toDecimal: function (value, params) { var me = this, decimal; value += ""; params = params || {}; if (params.thousandsSeparator) { value = me.replaceAll(value, params.thousandsSeparator, ""); } if (params.decimalSeparator) { value = me.replaceAll(value, params.decimalSeparator, "."); } value = me.replaceAll(value, " ", ""); if (isNaN(value)) { value = 0; } decimal = new Decimal(value); return decimal; }, /** * Replaces every occurrence of a substring with another string * @private * @param {String} str Input string * @param {String} target String to replace * @param {String} replacement Replacement string * @returns {String} String */ replaceAll: function (str, target, replacement) { return String(str).split(target).join(replacement); } }); //# sourceURL=lib_sol.common.DecimalUtils.js