使用 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);
如果我有一个设置为 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);