一行代码实现数值缩写
什么叫数值缩写
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 步进值,直到相除次数到达缩写长度。
</>