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

5

在我的情况下,举个例子:

d3.format("~s")(656628); //656.628k

但是我期望的结果是: 656.63千
我想使用d3-format选项,而不是手动处理它。
在线测试: https://npm.runkit.com/d3-format

它总是一个六位数吗?如果是,只需执行d3Format.format("~s")(656628).substring(0, 6) + 'k' - josemartindev
@josemartindev 糟糕了。 d3.format("~s")(65662); //65.662k只需执行 d3Format.format("~s")(656628).substring(0, 6) + 'k'这可以手动完成。我认为d3-format支持此操作。 - thienshaman
用有效数字的方式做这件事情很奇怪。我建议你自己计算。 - Sulthan
1个回答

5

你所需要的是d3.formatPrefix,它可以将值转换为适当SI前缀的单位,然后再以定点表示法格式化。

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

..., 使用".2"作为规范符号和你自己的数字作为值。

这里有一个演示,以你的数字为例:

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

这将为您提供所期望的结果:656.63k
为了完整起见,这里还有一些其他数字:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接