在通过num.toPrecision(2)之后,你可以得到123.45舍入到字符串1.2e + 2。
我能看到解决这个问题的最佳方法是:
num = 123.45;
num = num.toPrecision(2);
num = num.replace(/\.0e\+2/g, "00");
num = num.replace(/\.1e\+2/g, "10");
num = num.replace(/\.2e\+2/g, "20");
num = num.replace(/\.3e\+2/g, "30");
num = num.replace(/\.4e\+2/g, "40");
num = num.replace(/\.5e\+2/g, "50");
num = num.replace(/\.6e\+2/g, "60");
num = num.replace(/\.7e\+2/g, "70");
num = num.replace(/\.8e\+2/g, "80");
num = num.replace(/\.9e\+2/g, "90");
输出为1.2e + 2。我需要120(或970而不是9.7e + 2等)。
是否有一个javascript正则表达式表达式,并且不关心条件会输出到输出。基本上是在一条指令中做到这一点吗?
答案 0 :(得分:0)
您可以通过除以适当的指数10,取消最低限度并重新乘以来更改精度。
function change_precision(n, prec) {
var num_digits = Math.floor(Math.log10(n));
var new_digits = num_digits - prec;
var multiplier = Math.pow(10, new_digits);
return Math.floor(n / multiplier) * multiplier;
}
> change_precision(11111000, 2)
< 11000000
> change_precision(123.45, 4)
< 123.4
答案 1 :(得分:-1)
如果要使用正则表达式,则可以更改以下所有正则表达式:
num = 123.45
num = num.toPrecision(2);
num = num.replace(/\.(\d)e\+2/g, "$10") // "120"
如果您希望将num
保留为数字,则只需再次转换数字,然后将其修复。
num = 123.45
num = Number(num.toPrecision(2)) // 120
修改强>
修复num.toPrecision(1)
num = 123.45
num = num.toPrecision(1);
num = num.replace(/(?:\.)?(\d)e\+2/g, "$10") // "10"