我有一个 javascript 程序,它在控制台中吐出大量形式为“3.173538947635389377E+98”的数字,并且为了便于比较而尝试将它们减少为“3.17E+98”之类的东西但没有运气。
我将数字字符串化,计算周期和 E 位置,切割和切块,直到我得到字符串形式 '317.35E+96',其中 96 是 3 的倍数。 然后,当我使用 Number() 重新表示为数字时,它恢复为“3.173538947635389377E+98”。 我本可以将它保留为字符串,但稍后必须重新转换为数字。 有降低复杂性的简单方法吗?当字符串太长时,几乎不可能检查和看到类似的数字等。我想 js 人有他们的理由,但我无能为力。
Intl.NumberFormat
和 engineering
符号:
const display = (n) => new Intl.NumberFormat('en', {
notation: 'engineering',
maximumFractionDigits: 2
}).format(n);
console.log(display(3.173538947635389377E+98));
您可以使用
toFixed()
方法将多位指数表示到小数点后两位。
例如,
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var num = 3.14159265358979323846264338327950;
var result = num.toFixed(2);
document.getElementById("demo").innerHTML = result;
</script>
</body>
</html>
// 结果将是 3.14