我正在使用chart.js来显示我的销售额,问题是我无法将数据转换为带有逗号和两位小数的数字格式。
当数据是一个整数时,输出是正确的。但是,当我显示平均销售额时,我得到的输出如下:
平均销售额(无格式)1000.2017
平均销售额(含格式)1,000.2,017
总销售额(无格式)1000
总销售额(含格式)1,000
如何在JavaScript中正确格式化输出?
tooltips: {
callbacks: {
label: function(tooltipItem, data) {
var value = data.datasets[0].data[tooltipItem.index];
value = value.toString();
value = value.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return value;
}
}
},
scales: {
yAxes: [{
ticks: {
userCallback: function(value, index, values) {
value = value.toString();
value = value.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return value;
}
}
}]
}
字符串
3条答案
按热度按时间sh7euo9m1#
JavaScript为你提供了一些解决方案。下面是我想到的前两个。
1. number.toLocaleString
如前所述,.toLocaleString可以帮助您,但使用
maximumFractionDigits
代替minimumFractionDigits
。如下所示:
字符串
所以总结一下:
型
和比
型
2. Number.parseFloat + toFixed
型
在每种方法中,最好将您的解决方案 Package 在函数中:
型
你也可以使用正则表达式。我会说这是overaly复杂的,虽然。
另外,需要注意的非常重要的一点是,你可能想也可能不想让你的最终结果更接近。
使用
toLocaleString
和maxDigits只会删除这两个数字之后的所有内容。使用toFixed
会不正确地舍入输出。此解决方案将适当地舍入它:
型
点击这里:Format number to always show 2 decimal places
最后一件事,可能是最重要的。取决于什么格式的输入数字将有,上述解决方案可能会或可能不会工作。您需要决定输入格式,如果不能预见,为每种可能性提供格式化程序:
1000000.123124
10000123123
100000,1239
1.12039
1,19012
等
根据格式,您需要采取的操作顺序可能会有所不同。
neskvpey2#
你可以尝试像这样使用toLocaleString:
字符串
它将根据您的区域设置数字格式,并在逗号后使用千位分隔符和两位数字。
kgqe7b3p3#
您正在寻找:
这是你的函数:
字符串