D3.js 版本4中的D3格式“s”

D3.js 版本4中的D3格式“s”,d3.js,D3.js,我正在从d3版本3转换到版本4。我不知道如何解决问题。由对格式的更改引入 版本3 d3.format('s')(14000) //14K d3.format('s')(4000) //4K d3.format('s')(4000.10) //"4.0001k" 版本4 d3.format('s')(14000) //14.0000k d3.format('s')(4000) //4.0000k d3.format('s')(4000.10) //"4.0001k" 这也表现出奇怪的猜测数字的

我正在从d3版本3转换到版本4。我不知道如何解决问题。由对格式的更改引入

版本3

d3.format('s')(14000) //14K
d3.format('s')(4000) //4K
d3.format('s')(4000.10) //"4.0001k"
版本4

d3.format('s')(14000) //14.0000k
d3.format('s')(4000) //4.0000k
d3.format('s')(4000.10) //"4.0001k"
这也表现出奇怪的猜测数字的显著变化

d3.format('.0s')(14000) //"10k"
我想以千为单位显示零小数和K if


注意:现在不回答我如何做同样的事情的问题。

您正在寻找具有两个有效数字的SI前缀,该说明符将是:

d3.format(".2s")(14000)
"14k"
那么:

var v=14000; console.logd3.format.+v.toString.match/[1-9]/g.length+sv; var v=4000; console.logd3.format.+v.toString.match/[1-9]/g.length+sv;
我猜您正在寻找~选项:


它是以d3格式1.3.0添加的:

唯一的区别似乎是d3.format'.2s'4000//4.0k,我想我可以接受。@Tim,我想你可以计算非零来猜测有效数字;见上文。
d3.format("s")(1500);  // "1.50000k"
d3.format("~s")(1500); // "1.5k"