【问题标题】:How to round off to 2 decimal places with format SI prefix?如何使用格式 SI 前缀四舍五入到小数点后 2 位?
【发布时间】:2019-08-31 15:38:11
【问题描述】:

以我为例:

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

但我的预期结果:656.63k

我想使用 d3-format 选项而不是手动处理它。

现场测试:https://npm.runkit.com/d3-format

【问题讨论】:

  • 它是否总是一个 6 位数字?如果是这样,只需 d3Format.format("~s")(656628).substring(0, 6) + 'k'
  • @josemartindev 哦,不。 d3.format("~s")(65662); //65.662k ``` 只需做 d3Format.format("~s")(656628).substring(0, 6) + 'k' ``` 它是手动的。我认为 d3 格式支持做到这一点。
  • 使用有效数字的方式很奇怪。我建议你自己计算。

标签: javascript reactjs d3.js number-formatting


【解决方案1】:

您只需要d3.formatPrefix,它...

在以定点表示法格式化之前,将值转换为指定数字参考值的适当 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>

【讨论】:

    猜你喜欢
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 2017-03-26
    • 2015-11-24
    • 2012-03-11
    相关资源
    最近更新 更多