//科学计数法转数字
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);
			  },

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐