Форматировать валюту с помощью Jquery (удалять конечные нули после десятичного знака)?

#jquery

#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> 
  

Пожалуйста, кто-нибудь может показать мне, где я ошибаюсь?

Комментарии:

1. Обязательно ли вам использовать метод parseFloat или вы также можете использовать parseInt?

Ответ №1:

Если вы уверены, что выходные данные будут иметь формат .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*/,''));  

Ответ №2:

Мне удалось решить эту проблему, слегка изменив свой код и используя эту строку:

   $('#rate_out4').val('£'   parseFloat(this.value, 10).toFixed(2).replace(/(d)(?=(d{3}) .)/g, "$1,").toString().slice(0,-3));
  

Ответ №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> 
  

Ответ №4:

Вы можете использовать Intl.NumberFormat объект следующим образом:

 var number = 2000;

console.log(new Intl.NumberFormat('en-UK', {
  style: 'currency',
  currency: 'GBP',
  maximumSignificantDigits: 21
}).format(number));