JS保留小数点后有效数字两位

JS保留小数点后有效数字两位

在想保留小数点后有效数字保留两位时,需用到嵌套方法一层一层的去判断当前位数的数字是否为有效数字,但如遇到小数点过多的数字,js语法会将其自动变为科学记数法进行保存,所以在执行方法时应先判断当前数字是否为科学记数法,如是则将科学记数法数字转换为普通数值。

科学记数法转为普通数值字符串并保留两位小数
transferToNumber(inputNumber) {
    // 先判断当前数值是否为NaN
    if(isNaN(inputNumber)) {
        return inputerNumber;
    }
    inputerNumber = '' + inputerNumber; // 将数值以科学记数法的形态转化为字符串
    inputerNumber = parseFloat(inputNumber);
    let eformat = inputerNumber.toExponential(); // 转化为标准的科学记数法形式
    let tempArray = eformat.match(/\d(?:\.(\d*))?e([+-]\d+)/); // 分离出小数值和指数值
    // tempArray的格式为 
    // ["2.5e-14", "5", "-14", index: 0, input: "2.5e-14", groups: undefined]
    let number = inputerNumber.toFixed(Math.max(0, 1 - tempArray[2]));
    return number;
}
保留小数点后两位有效数字
// value为要进行保留小数位的数字,count为计数
significantNum(value, count) {
    let newNum = count;
    let value1 = parseFloat(value);
    let valueString = value.toString();
    // 判断数字是否为科学记数法形式
    if(valueString.indexOf('e') !== -1) {
        return this.transferToNumber(value);
    }
    let newData = value1.toFixed(newNum + 1);
    if(value1 === 0) {
        return newData;
    }
    if(parseFloat(value1.toFixed(2)) === 0) {
        if(parseInt(value1 * Math.pow(10, newNum)) === 0) {
            newNum++;
            return this.significantNum(value1, newNum);
        } else {
            newData = value1.toFixed(newNum + 1);
        }
    } else {
        newData = value1.toFixed(2);
    }
    return newData;
}
调用示例
let numData = 1.000000255458;
let newNum = this.significantNum(numData, 1);
console.log(newNum); // 1.00000026
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值