请问后台给我返回23.43324353324521e+22这一大串小数,我想保留2位怎么实现?

请问后台给我返回23.43324353324521e+22这一大串小数,我想保留2位怎么实现?

这里的e它表示这并不是个小数(e后的数表示10的多少次方),所以有可能不能用toFixed(2)截取两位小数;
提供一个思路,通过indexOf找到小数点的index,再通过substring(0, '小数点的位置的index + 2')

toFixed(2)

img


function text(num) {
   num.toFixed(2)
}

1asdasda
22adasd
3asdadad

先把科学计数法转化为正常数,再保留两位小数

可以先转化为字符串处理
参考文章: https://blog.csdn.net/sf4928579/article/details/122901579?spm=1001.2014.3001.5502

这数字太大了

  function toolNumber(num_str) {
                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;
                }
            }

效果:

img