规则:0-99999不缩写,100K-9999K,10M-9999M,依次类推,单位最少两位数,没有小数点。
以下代码为type script,传进一个数字的字符串和长度,范围缩写后的字符串:
function getUn_sword_itStr(arrStr: string, unit: number): string {
let unitStr = "";
let count = arrStr.length;
let str = ["K","M","B","T","q"]
if (unit > 5) {
let num = Math.floor( (unit - 5) /3)
if (num >= 4) {
unitStr = "q"
count = count - 15;
} else {
unitStr = str[num]
count = count - 3 * (num + 1)
}
}
let newStr = arrStr.substr(0, count);
let showNum = Number(newStr)
return showNum.toFixed(0).toString() + unitStr;
}
但是此代码会有一个问题,当传入一个科学计数法的字符串后,结果就会导致错误。
因此不能光使用toString方法,应当采用如下方法,以十进制转换成字符串。
getStr(): string {
let bigNum = new BigNumber("12342342342345324234")
let bigString = bigNum.toString(10)
let str = getUnitStr(bigString, bigString.length);
return str;
}