首页 > 解决方案 > 将长数字格式化为 K 和 2 个有效数字

问题描述

我有以下数字,我想将其格式化为更简洁的长度以显示在图例上

1000000
1200
321
2
0.31243
0.011231132

如下

100K
1.2K
321
2
0.31
0.01

我试图通过使用内置的 d3 格式功能来解决这个问题

d3.format(".2s")

然而,输出是

100k
1.2k
321
2
30m
100m

我认为问题在于s标识符与 SI 单位有关,除非数字低于 1,否则它与我想要的一致。如何将其格式化为我期望的格式

当我使用时,tickFormat(d3.format(".2s"));我需要格式函数与 tickFormat 所期望的格式相同

标签: javascriptd3.js

解决方案


在我看来,您希望避免使用 SI 前缀作为因数。如果这是正确的,只需检查值是否大于 1 以应用格式就足够了:

[1000000, 1200, 321, 2, 0.31243, 0.011231132].forEach(d => {
  d > 1 ? console.log(d3.format(".2s")(d)) : console.log(d3.format(".2")(d))
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>


推荐阅读