如何重写 JavaScript 货币格式以缩写美元金额
How to rewrite JavaScript currency formatting to abbreviate dollar amount
我正在使用 chartjs-plugin-datalabels 永久显示每个图表数据集上方的数据标签。我在每个图表脚本中使用以下代码以美元显示货币金额:
plugins: {
datalabels: {
formatter: function(value, context) {
return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
}
}
然后输出到:$#,###,###
为了节省 space,我如何重写此代码以像这样的缩写方式显示上述金额:$#.#m。第一个逗号变成小数点,其余整数四舍五入。
因此,数十亿人将拥有 B,数百万人将拥有 M,而数千人将拥有 K ,等等...
示例:
10,500,000,000 美元 --> 10.5 美元
1,500,000,000 美元 --> 1.5b 美元
10,500,00 美元 --> 1050 万美元
1,500,000 美元 --> 150 万美元
10,500 美元 --> 10.5 千美元
1,500 美元 --> 1500 美元
.replace()
部分的细分也将不胜感激。
在这里找到我的答案:
function nFormatter(num) {
if (num >= 1000000000) {
return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'G';
}
if (num >= 1000000) {
return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
}
if (num >= 1000) {
return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K';
}
return num;
}
我正在使用 chartjs-plugin-datalabels 永久显示每个图表数据集上方的数据标签。我在每个图表脚本中使用以下代码以美元显示货币金额:
plugins: {
datalabels: {
formatter: function(value, context) {
return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
}
}
然后输出到:$#,###,###
为了节省 space,我如何重写此代码以像这样的缩写方式显示上述金额:$#.#m。第一个逗号变成小数点,其余整数四舍五入。
因此,数十亿人将拥有 B,数百万人将拥有 M,而数千人将拥有 K ,等等...
示例:
10,500,000,000 美元 --> 10.5 美元
1,500,000,000 美元 --> 1.5b 美元
10,500,00 美元 --> 1050 万美元
1,500,000 美元 --> 150 万美元
10,500 美元 --> 10.5 千美元
1,500 美元 --> 1500 美元
.replace()
部分的细分也将不胜感激。
在这里找到我的答案:
function nFormatter(num) {
if (num >= 1000000000) {
return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'G';
}
if (num >= 1000000) {
return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
}
if (num >= 1000) {
return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K';
}
return num;
}