一行代码实现数值缩写
什么叫数值缩写
1 => 1
1000 => 1K
10000 => 10K
1000000 => 1M
1000000000 => 1G
数值缩写是将长数值转换成短数值的表示。之前,这里的缩写单位弄混淆了,详见下表:
Prefix | Symbol(s) | Power of 10 | Power of 2 |
---|---|---|---|
yocto- | y | 10^-24 | -- |
zepto- | z | 10^-21 | -- |
atto- | a | 10^-18 | -- |
femto- | f | 10^-15 | -- |
pico- | p | 10^-12 | -- |
nano- | n | 10^-9 | -- |
micro- | m | 10^-6 | -- |
milli- | m | 10^-3 | -- |
centi- | c | 10^-2 | -- |
deci- | d | 10^-1 | -- |
(none) | -- | 10^0 | 2^0 |
deka- | D | 10^1 | -- |
hecto- | h | 10^2 | -- |
kilo- | k or K | 10^3 | 2^10 |
mega- | M | 10^6 | 2^20 |
giga- | G | 10^9 | 2^30 |
tera- | T | 10^12 | 2^40 |
peta- | P | 10^15 | 2^50 |
exa- | E | 10^18 | 2^60 |
zetta- | Z | 10^21 | 2^70 |
yotta- | Y | 10^24 | 2^80 |
实现
var abbr = function (number) {
var abbrList = ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];
var step = 1000;
var i = 0;
var j = abbrList.length;
while (number >= step && ++i < j) {
number = number / step;
}
if (i === j) {
i = j - 1;
}
return number + abbrList[i];
};
通过 while 循环来相除 1000 步进值,直到相除次数到达缩写长度。
</>