使用jQuery格式化货币(十进制位置后删除落后零)



我有以下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));

最新更新