uniapp 支持科学计数法输入
·
//科学计数法转数字
export function sciToNumber(numStr) {
numStr = String(numStr);
if (!/e/i.test(numStr)) return numStr;
let [base, exp] = numStr.toLowerCase().split('e');
let exponent = parseInt(exp, 10);
// 小数点位置
let dotIndex = base.indexOf('.');
let digits = base.replace('.', '');
let move = exponent;
if (dotIndex === -1) {
dotIndex = digits.length;
}
let newDotIndex = dotIndex + move;
if (newDotIndex <= 0) {
return '0.' + '0'.repeat(-newDotIndex) + digits;
} else if (newDotIndex >= digits.length) {
return digits + '0'.repeat(newDotIndex - digits.length);
} else {
return digits.slice(0, newDotIndex) + '.' + digits.slice(newDotIndex);
}
}
代码:
<u-input
v-model="value"
placeholder="请输入科学计数法数字"
@blur="onBlur2"
/>
value: '',
textToNumber(){
//科学计数法转数字
function sciToNumber(numStr) {
numStr = String(numStr);
if (!/e/i.test(numStr)) return numStr;
let [base, exp] = numStr.toLowerCase().split('e');
let exponent = parseInt(exp, 10);
// 小数点位置
let dotIndex = base.indexOf('.');
let digits = base.replace('.', '');
let move = exponent;
if (dotIndex === -1) {
dotIndex = digits.length;
}
let newDotIndex = dotIndex + move;
if (newDotIndex <= 0) {
return '0.' + '0'.repeat(-newDotIndex) + digits;
} else if (newDotIndex >= digits.length) {
return digits + '0'.repeat(newDotIndex - digits.length);
} else {
return digits.slice(0, newDotIndex) + '.' + digits.slice(newDotIndex);
}
}
// this.value= sciToNumber(this.value);
console.log(sciToNumber(this.value))
return sciToNumber(this.value);
},
onBlur2() {
if (!this.isValidNumber(this.value)) {
this.value = "";
}else{
this.textToNumber();
}
},
isValidNumber(val) {
if (val === "" || val == null) return false;
const str = String(val).trim();
// 普通数字合法
if (!isNaN(str) && str !== '') return true;
// 科学计数法合法
const sciReg = /^-?\d+(\.\d+)?e[+-]?\d+$/i;
return sciReg.test(str);
},
更多推荐



所有评论(0)