@lzwme/asmd-calc
Version:
支持浮点数精度的加减乘除四则运算 JS 库。
49 lines (48 loc) • 1.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDecimalLen = getDecimalLen;
exports.isDecimal = isDecimal;
exports.isNull = isNull;
exports.toNonExponential = toNonExponential;
/**
* 获取指定数值的小数位长度
* @param num
*/
function getDecimalLen(num) {
if (!isDecimal(num))
return 0;
try {
return toNonExponential(num).split('.')[1].length;
}
catch (e) {
console.error(num, e);
return 0;
}
}
/**
* 是否为小数
* @param n 要识别的参数
* @param useRegExp 是否使用正则方式。默认为 false
*/
function isDecimal(value) {
var n = Number(value);
return !Number.isNaN(n) && Math.ceil(n) !== n;
}
/**
* NaN、null、undefined 返回 true,其它为 false
* @param value
*/
function isNull(value) {
return null == value || isNaN(value);
}
/** 将指定的浮点数转换为非科学计数法的字符串格式 */
function toNonExponential(num) {
if (!num)
return '0';
var strNum = String(num);
if (strNum.indexOf('e') === -1)
return strNum;
num = Number(num);
var m = num.toExponential().match(/\d(?:\.(\d*))?e([+-]\d+)/);
return num.toFixed(Math.max(0, (m[1] || '').length - Number(m[2])));
}