[javascript] jQuery 또는 Javascript를 사용하여 통화 문자열을 이중으로 변환하는 방법은 무엇입니까?

통화 문자열 이있는 텍스트 상자가 있는데 그 문자열을 이중으로 변환하여 일부 작업을 수행해야합니다.

"$1,100.00"1100.00

이것은 모든 클라이언트 측에서 발생해야합니다. 통화 문자열을 입력 으로 통화 문자열로 두는 것 외에는 선택의 여지가 없지만 수학 연산을 허용하기 위해 통화 문자열을 이중으로 캐스트 / 변환해야합니다.



답변

점이 아닌 숫자를 모두 제거하십시오.

var currency = "-$4,400.50";
var number = Number(currency.replace(/[^0-9.-]+/g,""));


답변

accounting.js 는 갈 길입니다. 나는 프로젝트에서 그것을 사용하고 그것을 사용하는 아주 좋은 경험을했습니다.

accounting.formatMoney(4999.99, "€", 2, ".", ","); // €4.999,99
accounting.unformat("€ 1.000.000,00", ","); // 1000000

GitHub 에서 찾을 수 있습니다


답변

정규식을 사용하여 서식 (달러 및 쉼표)을 제거하고 parseFloat를 사용하여 문자열을 부동 소수점 숫자로 변환하십시오 .`

var currency = "$1,100.00";
currency.replace(/[$,]+/g,"");
var result = parseFloat(currency) + .05;


답변

나는 이것이 오래된 질문이라는 것을 알고 있지만 추가 옵션을 원했습니다.

jQuery Globalize는 문화권 별 형식을 부동 소수점으로 구문 분석하는 기능을 제공합니다.

https://github.com/jquery/globalize

“$ 13,042.00″라는 문자열이 있고 Globalize는 en-US로 설정되었습니다.

Globalize.culture("en-US");

float 값을 다음과 같이 파싱 할 수 있습니다.

var result = Globalize.parseFloat(Globalize.format("$13,042.00", "c"));

이것은 당신에게 줄 것이다 :

13042.00

그리고 다른 문화와 함께 일할 수 있습니다.


답변

나는 이것이 오래된 질문이라는 것을 알고 있지만 CMS의 대답에는 하나의 작은 결함이있는 것 같습니다. 통화 형식이 “.”을 사용하는 경우에만 작동합니다. 소수점 구분 기호로. 예를 들어, 러시아 루블로 작업해야하는 경우 문자열은 다음과 같습니다 : “1,000,00 문지름”

내 솔루션은 CMS보다 훨씬 우아하지는 않지만 트릭을 수행해야합니다.

var currency = "1 000,00 rub."; //it works for US-style currency strings as well
var cur_re = /\D*(\d+|\d.*?\d)(?:\D+(\d{2}))?\D*$/;
var parts = cur_re.exec(currency);
var number = parseFloat(parts[1].replace(/\D/,'')+'.'+(parts[2]?parts[2]:'00'));
console.log(number.toFixed(2));

가정 :

  • 통화 값은 십진 표기법을 사용합니다
  • 문자열에 통화 값의 일부가 아닌 숫자가 없습니다.
  • 통화 값은 소수 부분에 0 또는 2 자리 숫자를 포함합니다 *

정규 표현식은 “1,999 달러와 99 센트”와 같은 것을 처리 할 수 ​​있지만 의도 한 기능이 아니며 의존해서는 안됩니다.

이것이 누군가를 도울 수 있기를 바랍니다.


답변

이 예제는 ok를 실행합니다.

var currency = "$123,456.00";
var number = Number(currency.replace(/[^0-9\.]+/g,""));
alert(number);

http://jsbin.com/ecAviVOV/2/edit


답변

// “10.000.500,61 TL”price_to_number => 10000500.61

// “10000500.62”number_to_price => 10.000.500,62

JS FIDDLE : https://jsfiddle.net/Limitlessisa/oxhgd32c/

var price="10.000.500,61 TL";
document.getElementById("demo1").innerHTML = price_to_number(price);

var numberPrice="10000500.62";
document.getElementById("demo2").innerHTML = number_to_price(numberPrice);

function price_to_number(v){
    if(!v){return 0;}
    v=v.split('.').join('');
    v=v.split(',').join('.');
    return Number(v.replace(/[^0-9.]/g, ""));
}

function number_to_price(v){
    if(v==0){return '0,00';}
    v=parseFloat(v);
    v=v.toFixed(2).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
    v=v.split('.').join('*').split(',').join('.').split('*').join(',');
    return v;
}