使用 JavaScript,如何使用 .toExponential() 函数,但只使用两位小数(9.99e9,而不是 9.9999e9)

Using JavaScript, how do I use the .toExponential() function, but only using two decimal places (9.99e9, instead of 9.9999e9)

如果我有一个设置为 2345 的变量,并且我想将其转换为指数,我只需执行 variableName.toExponential().replace(/e+?/, 'e'),这将给我 2.345e3。但是,我希望它只有 return 两位小数,否则一旦我得到更大的数字,如 183947122,我将得到一个长小数,1.83947122e8。我希望它降到 1.83e8,但我不知道我会把 variable.toFixed(2) 放在这段代码中的什么地方。

您可以使用正则表达式和 replace(您已经使用它来将 e+ 替换为 e):

const str = variableName.toExponential().replace(/^(\d*\.\d{0,2})\d*e\+(\d+)$/, "e");

捕获系数的整数部分加上它的最多两位小数,忽略任何其他部分,并捕获完整的指数;它用 </code> 替换匹配项,因此您只剩下系数的最多两位数:</p> <p><div class="snippet" data-lang="js" data-hide="true" data-console="true" data-babel="false"> <div class="snippet-code snippet-currently-hidden"> <pre><code>function test(variableName) { const raw = variableName.toExponential(); const str = raw.replace(/^(\d*(?:\.\d{0,2})?)\d*e\+(\d+)$/, "e"); console.log(variableName, "=>", raw, "=>", str); } test(2345); test(100); test(1019); test(183947122);

var a=1233434;
console.log(a.toExponential(2));

您可以在 .toExponential(2) 函数中传递参数 rounding.it 将在小数点后给出 2 个数字 检查此 link https://www.geeksforgeeks.org/javascript-toexponential-function/

您可以计算下限值,然后应用 toExponential

const f = (x, p) => {
    const l = 10 ** (Math.floor(Math.log10(Math.abs(x))) - p);
    return (Math.floor(x / l) * l).toExponential(p);
}

console.log(f(183947122, 2));
console.log(f(-183947122, 2));
console.log(f(183947122, 4));