gpt4 book ai didi

javascript - 数字到字符串的表示

转载 作者:行者123 更新时间:2023-12-02 22:43:31 26 4
gpt4 key购买 nike

我正在尝试创建一个函数:

1 000 000 变成 1m100 000 000 变成 100m999 000 000 变成 999m1 000 000 000 变为 1b100 000 000 000 变为 100b1000 000 000 000 变成 1t

对 SO 进行一些研究,我发现了一个非常接近的函数:

AbbreviateNumber = ({value}) => {
var suffixes = ["", "k", "m", "b","t"];
var suffixNum = Math.floor((""+ Math.trunc(value)).length/3);
var shortValue = parseFloat((suffixNum != 0 ? (value / Math.pow(1000,suffixNum)) :
value).toPrecision(2));
if (shortValue % 1 != 0) {
var shortNum = shortValue.toFixed(1);
};
return shortValue+suffixes[suffixNum];
};

该函数的问题在于:

AbbreviateNumber(100000000000) 返回 0.1t 而不是 100b。

我找不到正确的逻辑,使其适用于 1 000 000 000 000 => 1t 和 100 000 000 000 => 100b 而不是 0.1t 或 100000 返回 100k 而不是 0.1m..

最佳答案

可能是一些简单的方法,但这是一个字面方法。

function abbrNum(num) {
let mappings = {
K: [1000, 999999],
M: [1000000, 999999999],
B: [1000000000, 999999999999],
T: [1000000000000, 999999999999999],
};

let abs = Math.abs(num);

for (var abbr in mappings) {
if (abs >= mappings[abbr][0] && abs <= mappings[abbr][1]) {
return Math.round(num / mappings[abbr][0])+abbr;
}
}

return num;
}

https://jsfiddle.net/6820medp/

关于javascript - 数字到字符串的表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58507506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com