如何使用格式SI前缀四舍五入到小数点后两位?

thi*_*man 5 javascript number-formatting d3.js reactjs

我的例子:

d3.format("~s")(656628); //656.628k
Run Code Online (Sandbox Code Playgroud)

但我的预期结果:656.63k

我想使用 d3 格式的选项,而不是手动处理它。

现场测试:https : //npm.runkit.com/d3-format

Ger*_*ado 5

你所需要的只是d3.formatPrefix,这...

在以定点表示法格式化之前,将值转换为指定数字参考值的适当 SI 前缀的单位。

...,以".2"说明符和您自己的数字作为值。

这是带有您的号码的演示:

const myNumber = 656628;
console.log(d3.formatPrefix(".2", myNumber)(myNumber));
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

这会给你你的预期结果:656.63k

而且,为了完整性,还有一些其他数字:

[1232, 7676546655, 665, 0.0012, 8887878].forEach(function(d) {
  console.log("Number: " + d + " - Your format: " + d3.formatPrefix(".2", d)(d))
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
Run Code Online (Sandbox Code Playgroud)