|
@@ -218,33 +218,61 @@ function RGBToHex(rgb) {
|
|
|
* thousands_sep:是否添加千分位符号
|
|
* thousands_sep:是否添加千分位符号
|
|
|
* */
|
|
* */
|
|
|
function numberFormat(number, decimals, thousands_sep) {
|
|
function numberFormat(number, decimals, thousands_sep) {
|
|
|
- if(!/\d/.test(number)) {
|
|
|
|
|
|
|
+ if (!/\d/.test(number)) {
|
|
|
return number;
|
|
return number;
|
|
|
}
|
|
}
|
|
|
- number = (number + '').replace(/[^0-9+-Ee.]/g, '');
|
|
|
|
|
- var dlength = (number + '').split('.')[1] || 0;
|
|
|
|
|
- var n = !isFinite(+number) ? 0 : +number,
|
|
|
|
|
- prec = !isFinite(+decimals) ? (dlength > 2 ? 2 : dlength) : (Math.abs(decimals) > dlength ? dlength : Math.abs(decimals)),
|
|
|
|
|
|
|
+ number = _scientificNotationToString(number); // 将科学计数法处理的数字摊开
|
|
|
|
|
+ var narr = (number + '').split('.');
|
|
|
|
|
+ var n1 = narr[0],
|
|
|
|
|
+ n2 = narr[1] || '',
|
|
|
|
|
+ prec = !isFinite(+decimals) ? 2 : +decimals,
|
|
|
s = '',
|
|
s = '',
|
|
|
- toFixedFix = function (n, prec) {
|
|
|
|
|
- var k = Math.pow(10, prec);
|
|
|
|
|
- return '' + Math.round(n * k) / k;
|
|
|
|
|
|
|
+ toDecimal = function (n1, n2, p) {
|
|
|
|
|
+ var num = n1 + '.' + (n2.length > p ? (
|
|
|
|
|
+ n2[p] >= 5 ? (
|
|
|
|
|
+ n2.substring(0, p - 1) + (Number(n2[p-1]) + 1)
|
|
|
|
|
+ ) : (
|
|
|
|
|
+ n2.substring(0, p)
|
|
|
|
|
+ )
|
|
|
|
|
+ ) : (
|
|
|
|
|
+ n2
|
|
|
|
|
+ ));
|
|
|
|
|
+ return num;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
|
|
|
|
|
var re = /(-?\d+)(\d{3})/,
|
|
var re = /(-?\d+)(\d{3})/,
|
|
|
sep = ',';
|
|
sep = ',';
|
|
|
- while (!!thousands_sep && re.test(s[0])) {
|
|
|
|
|
- s[0] = s[0].replace(re, "$1" + sep + "$2");
|
|
|
|
|
|
|
+ while (!!thousands_sep && re.test(n1)) {
|
|
|
|
|
+ n1 = n1.replace(re, "$1" + sep + "$2");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if ((s[1] || '').length < prec) {
|
|
|
|
|
- s[1] = s[1] || '';
|
|
|
|
|
- s[1] += new Array(prec - s[1].length + 1).join('0');
|
|
|
|
|
- }
|
|
|
|
|
- return s.join('.');
|
|
|
|
|
|
|
+ s = toDecimal(n1, n2, prec);
|
|
|
|
|
+ s = s.replace(/\.0*$/, '').replace(/[+-]{1}0+$/, '0');
|
|
|
|
|
+ return s;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+function _scientificNotationToString(param) {
|
|
|
|
|
+ let strParam = String(param);
|
|
|
|
|
+ let flag = /e/.test(strParam)
|
|
|
|
|
+ if (!flag) return strParam
|
|
|
|
|
+
|
|
|
|
|
+ let positive = true; // 正数
|
|
|
|
|
+ let sysbol = true; // 指数符号 true: 正,false: 负
|
|
|
|
|
+ if (/^-/.test(strParam)) {
|
|
|
|
|
+ positive = false;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (/e-/.test(strParam)) {
|
|
|
|
|
+ sysbol = false
|
|
|
|
|
+ }
|
|
|
|
|
+ // 指数
|
|
|
|
|
+ let index = Number(strParam.match(/\d+$/)[0])
|
|
|
|
|
+ // 基数
|
|
|
|
|
+ let basis = strParam.match(/^[+-]{0,1}[\d\.]+/)[0].replace(/[+-.]/g, '');
|
|
|
|
|
+
|
|
|
|
|
+ let absNum = sysbol ? basis.padEnd(index + 1, 0) : basis.padStart(index + basis.length, 0).replace(/^0/, '0.');
|
|
|
|
|
+ return (positive ? '' : '-') + absNum;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
;exports = module.exports = (function(){
|
|
;exports = module.exports = (function(){
|
|
|
return { remove, isEqual, getUrlParam, hashcode, delay, dateFormat, arrayToTree, ArrayEquals, deepAssign,
|
|
return { remove, isEqual, getUrlParam, hashcode, delay, dateFormat, arrayToTree, ArrayEquals, deepAssign,
|
|
|
HexToRGB, RGBToHex, numberFormat
|
|
HexToRGB, RGBToHex, numberFormat
|