我正在努力完成三件事-
我想缩短大数字并添加一个 K/M/B 后缀 我希望能够强制小数位数 我希望能够强制将数千表示为一百万的小数部分
只是缩短,四舍五入到小数点后两位
- 1200000 ---->>> 1.2M
- 1248000 ---->>> 1.25M
- 248000 ---->>> 248K
缩短,强制保留 2 位小数
- 1200000 ---->>> 1.20M
- 1248000 ---->>> 1.25M
- 248000 ---->>> 248.00K
缩短,强制保留 3 位小数,强制千到百万
- 1200000 ---->>> 1.200M
- 1248000 ---->>> 1.248M
- 248000 ---->>> 0.248M
我有一个 javascript 函数,我发现它可以完成大部分工作,除了它不强制小数位数,而且它不允许我强制数千到数百万
function shortenNumber (num, decimalPlaces) {
var str,
suffix = '';
decimalPlaces = decimalPlaces || 0;
num = +num;
var factor = Math.pow(10, decimalPlaces);
//99999 -> 99.9K
if (num < 1000) {
str = num;
} else if (num < 1000000) {
str = Math.floor(num / (1000 / factor)) / factor;
suffix = 'K';
} else if (num < 1000000000) {
str = Math.floor(num / (1000000 / factor)) / factor;
suffix = 'M';
} else if (num < 1000000000000) {
str = Math.floor(num / (1000000000 / factor)) / factor;
suffix = 'B';
} else if (num < 1000000000000000) {
str = Math.floor(num / (1000000000000 / factor)) / factor;
suffix = 'T';
}
return str + suffix;
}
所以它完成了第一个要求,部分完成了第二个(它会四舍五入到小数点后 2 位,但如果小数点为 0 则丢弃它),但不能将 K 表示为 M
如何修改此功能以执行此操作(或将其替换为另一个功能)?
谢谢!