首页 > 解决方案 > 如何重写 JavaScript 货币格式以缩写美元金额

问题描述

我正在使用 chartjs-plugin-datalabels 在每个图表数据集上方永久显示数据标签。我在每个图表脚本中使用以下代码以美元显示货币金额:

plugins: {
    datalabels: {
        formatter: function(value, context) {
            return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
        }
    }
}

然后输出到:$#,###,###

为了节省空间,我如何重写此代码以缩写形式显示上述金额:$#.#m。第一个逗号变成小数点,其余整数四舍五入。

因此,数十亿将拥有B,数百万将拥有M,数千将拥有K,等等......

例子:

$10,500,000,000 --> $10.5b

$1,500,000,000 --> $1.5b

10,500,00 美元 --> 1050 万美元

1,500,000 美元 --> 150 万美元

10,500 美元 --> 10.5 万美元

$1,500 --> $1.5k

该部分的细分.replace()也将不胜感激。

标签: javascriptformattingchart.jscurrency

解决方案


在这里找到我的答案:

https://stackoverflow.com/a/14994860/7811137

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;
}

推荐阅读