gpt4 book ai didi

javascript - 将数字格式化为带有 SI 前缀的整数

转载 作者:行者123 更新时间:2023-11-28 10:45:11 25 4
gpt4 key购买 nike

我正在绘制一个图表,该图表获取美元值(value)(从 0 到数百万),并且我试图显示漂亮的刻度。我已经使用 d3.nice 获得了 5 个刻度,所有刻度都有很好的值,这非常酷。但由于差异如此之大,我很难正确显示我的美元值(value)。

我想做的是:

  • 0-999:显示自身

  • 1,000 - 999,999:显示 1k-999k(如果 999,500 显示 1M 没问题,但使用 d3.format('.3s') 显示 1.00k 则不行,或者使用 d3 将 467k 变为 400k .format('.1s'))

  • 1,000,000 - 999,999,999:显示1M-999M(如果四舍五入时翻转也可以)

在 d3 版本 4 之前,这很容易。你可以这样做:

.ticks((d) => {
var prefix = d3.formatPrefix(d);

return prefix(d).toFixed()+''+prefix.symbol;
})

但是现在,我正在阅读 d3 v4 文档,因为这对我来说失败了,它说:

The d3.formatPrefix method has been changed. Rather than returning an SI-prefix string, it returns an SI-prefix format function for a given specifier and reference value. For example, to format thousands:

var f = d3.formatPrefix(",.0", 1e3);

f(1e3); // "1k"

f(1e4); // "10k"

f(1e5); // "100k"

f(1e6); // "1,000k"

现在这似乎不可能完成,因为我想改变有效数字的数量,但我没有看到明显的方法来实现这一点。我错过了一些简单的事情吗?

最佳答案

如果我正确理解您想要的输出,您可以使用数字本身来定义 d3.formatPrefix

看看这个演示:

[1, 999, 1000, 999000, 1000000].forEach(function(d) {
var prefix = d3.formatPrefix(".0", d)
console.log(d + ": " + prefix(d))
})
<script src="https://d3js.org/d3.v4.min.js"></script>

PS:使用这种方法,999500 将为您提供 1000k,而不是 1M。

关于javascript - 将数字格式化为带有 SI 前缀的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44772085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com