我有一些下面的数字,我想将其格式化为更简洁的长度以显示在图例上
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"));
时,我需要format函数的格式与tickFormat期望的格式相同
答案 0 :(得分:1)
在我看来,您想要避免约数的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>