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