javascript - 如何重写 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()
也将不胜感激。
解决方案
在这里找到我的答案:
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;
}
推荐阅读
- python - 转换为 exe 后 JWT 签名无效
- powershell - 导入 CSV 会拆分某些行
- excel - 删除工作表行时出错运行时错误“1004”:范围类的删除方法失败
- javascript - 从 request-promise set-cookie 标头为 Electron 设置 Cookie
- java - 在 java 中恢复应用程序后,我无法打开默认相机
- php - 问号数据后的Joomla JS文件删除
- java - 如何在Java中反序列化这个json?
- javascript - 在 JS 中异步一个 Post-Request
- wordpress - 预订系统 - WP
- spring-boot - Spring boot Camel为PUT,POST REST API返回db保存的对象