在测试大数据时候会出现科学计数法,该方法可以将科学计数法转化成字符串数字
// 处理科学计数法
export function filterScientific(num_str) {
if ((!num_str && num_str != 0) || isNaN(num_str)) {
return ''
}
num_str = num_str.toString()
if (num_str.indexOf('+') != -1) {
num_str = num_str.replace('+', '')
}
if (num_str.indexOf('E') != -1 || num_str.indexOf('e') != -1) {
var resValue = '',
power = '',
result = null,
dotIndex = 0,
resArr = [],
sym = ''
var numStr = num_str.toString()
if (numStr[0] == '-') {
//如果为负数,转成正数处理,先去掉‘-’号,并保存‘-’.
numStr = numStr.substr(1)
sym = '-'
}
if (numStr.indexOf('E') != -1 || numStr.indexOf('e') != -1) {
var regExp = new RegExp('^(((\\d+.?\\d+)|(\\d+))[Ee]{1}((-(\\d+))|(\\d+)))$', 'ig')
result = regExp.exec(numStr)
if (result != null) {
resValue = result[2]
power = result[5]
result = null
}
if (!resValue && !power) {
return false
}
dotIndex = resValue.indexOf('.') == -1 ? 0 : resValue.indexOf('.')
resValue = resValue.replace('.', '')
resArr = resValue.split('')
if (Number(power) >= 0) {
var subres = resValue.substr(dotIndex)
power = Number(power)
//幂数大于小数点后面的数字位数时,后面加0
for (var i = 0; i <= power - subres.length; i++) {
resArr.push('0')
}
if (power - subres.length < 0) {
resArr.splice(dotIndex + power, 0, '.')
}
} else {
power = power.replace('-', '')
power = Number(power)
//幂数大于等于 小数点的index位置, 前面加0
for (var i = 0; i < power - dotIndex; i++) {
resArr.unshift('0')
}
var n = power - dotIndex >= 0 ? 1 : -(power - dotIndex)
resArr.splice(n, 0, '.')
}
}
resValue = resArr.join('')
return sym + resValue
} else {
return num_str
}
}