使用SI前缀格式化具有固定小数位数的数字 [英] Format a number with SI Prefix, with fixed number of decimals
问题描述
我正在查找d3.format的可用类型
I'm looking over the available type for d3.format
可用的类型值有:
The available type values are:
exponent(e) - 使用Number.toExponential。
exponent ("e") - use Number.toExponential.
general(g) - 使用Number.toPrecision。
general ("g") - use Number.toPrecision.
固定(f) - 使用Number.toFixed。
fixed ("f") - use Number.toFixed.
integer(d) - 使用Number.toString,但忽略任何非整数值。
integer ("d") - use Number.toString, but ignore any non-integer values.
舍入(r) - 如固定,但舍入为精确有效数字。
rounded ("r") - like fixed, but round to precision significant digits.
百分比(%) - 如固定,但乘以100,后缀为%。
percentage ("%") - like fixed, but multiply by 100 and suffix with "%".
舍入百分比(p) - 例如四舍五入,但乘以100,后缀为%。
rounded percentage ("p") - like rounded, but multiply by 100 and suffix with "%".
SI前缀(s) - 如舍入,但带有单位后缀,例如9.5M 。
SI-prefix ("s") - like rounded, but with a unit suffixed such as "9.5M" or "1.00µ".
https://github.com/mbostock/d3/wiki/Formatting#wiki-d3_format
我想要的是SI -prefix就像固定不舍入这样的格式选项存在吗?
What I would like is an SI-prefix that is like fixed not rounded does such a format option exist?
一些例子:
var format = d3.format('.1s');
format(12600000); // Would like 12.6M get 10M
format(12400000); // Would like 12.4M get 10M
format(1240000); // Would like 1.2M get 1M
format(1290000); // Would like 1.3M get 1M
推荐答案
对的。使用 d3.formatPrefix()
一可以得到SI前缀。要获取不带小数的舍入数,我使用 JavaScript的 .toFixed()
:
You almost got it right. Using d3.formatPrefix()
one can get the SI prefix. To get the rounded number without decimals, I used Javascript's .toFixed()
:
var prefix = d3.formatPrefix(137594020);
console.log(prefix.symbol); // "M"
console.log(prefix.scale(137594020).toFixed()); // 138
var prefix = d3.formatPrefix(13759402);
console.log(prefix.symbol); // "M"
console.log(prefix.scale(13759402).toFixed()); // 14
var prefix = d3.formatPrefix(1375);
console.log(prefix.symbol); // "k"
console.log(prefix.scale(1375).toFixed()); // 1
这篇关于使用SI前缀格式化具有固定小数位数的数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!