bbo
Version:
bbo is a utility library of zero dependencies for javascript.
48 lines (36 loc) • 1.33 kB
JavaScript
;
/**
* https://locutus.io/php/
*/
// eslint-disable-next-line max-params
var numberFormat = (number, decimals, decPoint, thousandsSep) => {
var _number = String(number).replace(/[^0-9+\-Ee.]/g, '');
var _decimals = decimals;
var n = !isFinite(Number(_number)) ? 0 : Number(_number);
var prec = !isFinite(Number(_decimals)) ? 0 : Math.abs(_decimals);
var sep = typeof thousandsSep === 'undefined' ? ',' : thousandsSep;
var dec = typeof decPoint === 'undefined' ? '.' : decPoint;
var s = '';
var toFixedFix = function (n, prec) {
if (String(n).indexOf('e') === -1) {
return Number(Math.round(n + 'e+' + prec) + 'e-' + prec);
} else {
var arr = String(n).split('e');
var sig = '';
if (Number(arr[1]) + prec > 0) {
sig = '+';
}
return Number(Math.round(Number(arr[0]) + 'e' + sig + (Number(arr[1]) + prec)) + 'e-' + prec).toFixed(prec);
}
}; // @todo: for IE parseFloat(0.55).toFixed(0) = 0;
s = (prec ? toFixedFix(n, prec).toString() : String(Math.round(n))).split('.');
if (s[0].length > 3) {
s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
}
if ((s[1] || '').length < prec) {
s[1] = s[1] || '';
s[1] += new Array(prec - s[1].length + 1).join('0');
}
return s.join(dec);
};
module.exports = numberFormat;