我有以下jQuery脚本,将我的数字以 div
为货币。
So 2000 becomes £2,000.00
我的问题是,如何在小数点之后删除尾随的零?这样我的货币看起来像:
£2,000
这是我的代码:
<script>
/*Works only with Chrome
Inspired by Erik Deiner's concept :
http://dribbble.com/shots/435827-Concept-for-budget-price-slider
*/
$('#rate4').on("input", function() {
$('#rate_out4').val('£' + parseFloat(this.value, 10).toFixed(2).replace(/(d)(?=(d{3})+.)/g, "$1,").toString());
}).trigger("change");
</script>
请有人可以告诉我我出错的地方吗?
如果您确定输出将具有.xx
的格式,则可以简单地使用.substring()
:.substring(0,a.length-3)
。另外,您也可以使用.replace()
:.replace(/.d*/,'')
。测试正则
var a= "£2,000.00";
console.log(a, a.substring(0,a.length-3), a.replace(/.d*/,''));
我设法通过稍微更改代码并使用此行来解决此问题:
$('#rate_out4').val('£' + parseFloat(this.value, 10).toFixed(2).replace(/(d)(?=(d{3})+.)/g, "$1,").toString().slice(0,-3));
我只是好奇您确实需要parsefloat方法,如果您的计算或显示值不在小数中。然后,您可以使用Parseint,而不必担心字符串格式。
<script>
/*Works only with Chrome
Inspired by Erik Deiner's concept :
http://dribbble.com/shots/435827-Concept-for-budget-price-slider
*/
$('#rate4').on("input", function() {
$('#rate_out4').val('£' + parseInt(this.value, 10).replace(/(d)(?=
(d{3})+.)/g, "$1,").toString());
}).trigger("change");
</script>
您可以使用intl.numberformat对象这样:
var number = 2000;
console.log(new Intl.NumberFormat('en-UK', {
style: 'currency',
currency: 'GBP',
maximumSignificantDigits: 21
}).format(number));