yylib-quick-mobile
Version:
yylib-quick-mobile
67 lines (62 loc) • 2.61 kB
JavaScript
import uuid from 'uuid';
let MathUtils = {
uuid: () => {
let uuidArr = uuid.v4().split("-");
return uuidArr.join("");
},
/**
* 通过移动小数点 扩大倍数或缩小倍数(解决出现e+、e-的问题)
*
* @param value 数字字符串
*/
scienceNum: function (value) {
if (!value) return value;
if (typeof value === 'number') value = value + "";
let minusStr = '';//是否有负号,例如:-5e-8、-2.3e-8
if (value.substring(0, 1) === '-') {
minusStr = '-';
value = value.substring(1, value.length);
}
let eIndex = value.indexOf('E');
if (eIndex == -1) eIndex = value.indexOf('e');
if (eIndex != -1) {
let doubleStr = value.substring(0, eIndex);
let eStr = value.substring(eIndex + 1, value.length);
eStr = parseInt(eStr);
let doubleStrList = doubleStr.split('.');
let doubleStr1 = doubleStrList[0] || "";
let doubleStr2 = doubleStrList[1] || "";
if (eStr < 0) { //e- 很小的数
let str1Len = doubleStr1.length;
let eStrs = Math.abs(eStr);
if (str1Len > eStrs) {
let nums = doubleStr1.substring(0, eStrs);
let nume = doubleStr1.substring(eStrs, str1Len);
doubleStr = nums + "." + nume + nume;
} else if (str1Len < eStrs) {
let indexNum = eStrs - str1Len;
let str = _makeZero(indexNum); //用0补齐
doubleStr = '0.' + str + doubleStr1 + doubleStr2;
} else {
doubleStr = '0.' + doubleStr1 + doubleStr2;
}
} else { //e+ 很大的数
let str2Len = doubleStr2.length;
if (str2Len > eStr) {
let nums = doubleStr2.substring(0, eStr);
let nume = doubleStr2.substring(eStr, str2Len);
doubleStr = doubleStr1 + nums + '.' + nume;
} else if (str2Len < eStr) {
let indexNum = eStr - str2Len;
let str = _makeZero(indexNum); //用0补齐
doubleStr = doubleStr1 + doubleStr2 + str;
} else {
doubleStr = doubleStr1 + doubleStr2;
}
}
value = doubleStr;
}
return minusStr + value;
}
};
export default MathUtils;