복붙노트

[JQUERY] 어떻게 jQuery를 또는 자바 스크립트와 이중으로 통화 문자열을 변환하는?

JQUERY

어떻게 jQuery를 또는 자바 스크립트와 이중으로 통화 문자열을 변환하는?

해결법


  1. 1.이외의 모든 점 / 숫자를 제거합니다 :

    이외의 모든 점 / 숫자를 제거합니다 :

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

  2. 2.accounting.js 길을 가야하는 것입니다. 내가 프로젝트에서 그것을 사용하고 그것을 사용하여 아주 좋은 경험을했다.

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

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

    당신은 GitHub의에서 찾을 수 있습니다


  3. 3.포맷 (달러와 쉼표)를 제거하는 정규식을 사용하여 부동 소수점 number.`에 문자열을 변환에서는 parseFloat를 사용

    포맷 (달러와 쉼표)를 제거하는 정규식을 사용하여 부동 소수점 number.`에 문자열을 변환에서는 parseFloat를 사용

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

  4. 4.나는이 오래된 질문은 알고 있지만 추가 옵션을 제공하고 싶었다.

    나는이 오래된 질문은 알고 있지만 추가 옵션을 제공하고 싶었다.

    JQuery와의 세계화는 float로 문화의 특정 형식을 구문 분석 할 수있는 기능을 제공합니다.

    https://github.com/jquery/globalize

    EN-US에 문자열 "$ 13,042.00",와의 세계화 세트 감안할 때 :

    Globalize.culture("en-US");
    

    당신은 너무처럼 플로트 값을 구문 분석 할 수 있습니다 :

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

    이것은 당신을 줄 것이다 :

    13042.00
    

    그리고 당신은 다른 문화와 함께 작업 할 수 있습니다.


  5. 5.나는이 오래된 질문이다 알지만, CMS의 대답은 하나의 작은 작은 결함을 갖고있는 것 같아요 "."그것은 단지 통화 형식을 사용하는 경우 작동 소수 구분있다. 당신이 러시아 루블 작업해야 할 경우, 예를 들어, 문자열은 다음과 같이 표시됩니다 "1 000,00 문질러."

    나는이 오래된 질문이다 알지만, CMS의 대답은 하나의 작은 작은 결함을 갖고있는 것 같아요 "."그것은 단지 통화 형식을 사용하는 경우 작동 소수 구분있다. 당신이 러시아 루블 작업해야 할 경우, 예를 들어, 문자열은 다음과 같이 표시됩니다 "1 000,00 문질러."

    내 솔루션은 훨씬 덜 우아한 CMS의보다,하지만 트릭을 할해야합니다.

    VAR 통화 = "1 000,00 문질러."; // 그것은뿐만 아니라 미국 스타일의 통화 문자열을 작동 VAR cur_re = /\D*(\d+|\d.*?\d)(?:\D+(\d{2}))?\D*$/; VAR 부품 = cur_re.exec (통화); VAR 번호 =에서는 parseFloat. (부분 [1] .replace (/ \ D / '') + '? + (부 [2] 부 [2] : 00)); CONSOLE.LOG (number.toFixed (2));

    가정 :

    그것이 의도 된 기능이 아닙니다 그리고 그것은 의존해서는 안 불구하고 정규 표현식은 심지어, "1999 달러와 99 센트"같은 것을 처리 할 수 ​​있습니다.

    이 의지 도움말 사람을 바랍니다.


  6. 6.이 예제를 실행 확인

    이 예제를 실행 확인

    VAR 통화 = "$ 1,123,456.00"; VAR 참조 번호 = (currency.replace (/ [^ 0-9 \.] + / g '')); CONSOLE.LOG (번호);


  7. 7.// "10.000.500,61 TL"price_to_number => 10000500.61

    // "10.000.500,61 TL"price_to_number => 10000500.61

    // "10000500.62"number_to_price => 10.000.500,62

    JS 뿐인 : 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;
    }
    

  8. 8.이 제 기능입니다. 모든 통화와 함께 작동 ..

    이 제 기능입니다. 모든 통화와 함께 작동 ..

    function toFloat(num) {
        dotPos = num.indexOf('.');
        commaPos = num.indexOf(',');
    
        if (dotPos < 0)
            dotPos = 0;
    
        if (commaPos < 0)
            commaPos = 0;
    
        if ((dotPos > commaPos) && dotPos)
            sep = dotPos;
        else {
            if ((commaPos > dotPos) && commaPos)
                sep = commaPos;
            else
                sep = false;
        }
    
        if (sep == false)
            return parseFloat(num.replace(/[^\d]/g, ""));
    
        return parseFloat(
            num.substr(0, sep).replace(/[^\d]/g, "") + '.' + 
            num.substr(sep+1, num.length).replace(/[^0-9]/, "")
        );
    
    }
    

    사용법 : toFloat ( "$ 1,100.00") 또는 toFloat ( "1,100.00 $")


  9. 9.이 시도 할 수 있습니다

    이 시도 할 수 있습니다

    var에 STR = "$ 1112.12"; STR = str.replace ( "", ""); STR = str.replace ( "$", ""); CONSOLE.LOG (에서는 parseFloat (STR));


  10. 10.난, 난 그냥 어쩌면 당신은 국제 번호 형식에 대한 다음과 같은 더 광범위한 jQuery 플러그인 보는 것을 추천하고 싶어 당신이 당신의 질문에 대한 해결책을 찾을 것을 알고있다 :

    난, 난 그냥 어쩌면 당신은 국제 번호 형식에 대한 다음과 같은 더 광범위한 jQuery 플러그인 보는 것을 추천하고 싶어 당신이 당신의 질문에 대한 해결책을 찾을 것을 알고있다 :

    국제 번호 포맷터


  11. 11.

    jQuery.preferCulture("en-IN");
    var price = jQuery.format(39.00, "c");
    

    출력된다 : RS. 39.00

    use jquery.glob.js,
        jQuery.glob.all.js
    

  12. 12.이 날 및 커버 대부분의 가장자리의 경우 근무 :)

    이 날 및 커버 대부분의 가장자리의 경우 근무 :)

    function toFloat(num) {
      const cleanStr = String(num).replace(/[^0-9.,]/g, '');
      let dotPos = cleanStr.indexOf('.');
      let commaPos = cleanStr.indexOf(',');
    
      if (dotPos < 0) dotPos = 0;
    
      if (commaPos < 0) commaPos = 0;
    
      const dotSplit = cleanStr.split('.');
      const commaSplit = cleanStr.split(',');
    
      const isDecimalDot = dotPos
        && (
          (commaPos && dotPos > commaPos)
          || (!commaPos && dotSplit[dotSplit.length - 1].length === 2)
        );
    
      const isDecimalComma = commaPos
        && (
          (dotPos && dotPos < commaPos)
          || (!dotPos && commaSplit[commaSplit.length - 1].length === 2)
        );
    
      let integerPart = cleanStr;
      let decimalPart = '0';
      if (isDecimalComma) {
        integerPart = commaSplit[0];
        decimalPart = commaSplit[1];
      }
      if (isDecimalDot) {
        integerPart = dotSplit[0];
        decimalPart = dotSplit[1];
      }
    
      return parseFloat(
        `${integerPart.replace(/[^0-9]/g, '')}.${decimalPart.replace(/[^0-9]/g, '')}`,
      );
    }
    
    
    toFloat('USD 1,500.00'); // 1500
    toFloat('USD 1,500'); // 1500
    toFloat('USD 500.00'); // 500
    toFloat('USD 500'); // 500
    
    toFloat('EUR 1.500,00'); // 1500
    toFloat('EUR 1.500'); // 1500
    toFloat('EUR 500,00'); // 500
    toFloat('EUR 500'); // 500
    

  13. 13.

        $ 150.00
        Fr. 150.00
        € 689.00
    

    세 가지 통화 기호보다 우선은 또한 다른 사람을 위해 그것을 할 수 있습니다 위해 나는 테스트했습니다.

        var price = Fr. 150.00;
        var priceFloat = price.replace(/[^\d\.]/g, '');
    

    정규 표현식은 숫자 또는 period.So 아닌 모든 것을 제거합니다보다도 당신이 다음과 같이 가격을 얻을 것이다 출력 콘솔 경우 통화 기호없이하지만, "천의 150.00"의 경우 문자열을 얻을 수 있습니다

        console.log('priceFloat : '+priceFloat);
    
        output will be like  priceFloat : .150.00
    

    당신의 인덱스를 확인할 수 있도록하는 잘못이다 "." 그 분할하고 적절한 결과를 얻을.

        if (priceFloat.indexOf('.') == 0) {
                priceFloat = parseFloat(priceFloat.split('.')[1]);
        }else{
                priceFloat = parseFloat(priceFloat);
        }
    

  14. 14.

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

  15. 15.

    var parseCurrency = function (e) {
        if (typeof (e) === 'number') return e;
        if (typeof (e) === 'string') {
            var str = e.trim();
            var value = Number(e.replace(/[^0-9.-]+/g, ""));
            return str.startsWith('(') && str.endsWith(')') ? -value: value;
        }
    
        return e;
    } 
    

  16. 16.이 기능은 어느 로케일 및 통화 설정을 작동합니다 :

    이 기능은 어느 로케일 및 통화 설정을 작동합니다 :

    function getNumPrice(price, decimalpoint) {
        var p = price.split(decimalpoint);
        for (var i=0;i<p.length;i++) p[i] = p[i].replace(/\D/g,'');
        return p.join('.');
    }
    

    이 말은 소수점 문자를 알고 가정 (나는 그것을 얻을 수 있도록, 내 경우에는 로케일이 PHP에서 설정되어 ).


  17. 17.다음은 간단한 기능입니다 -

    다음은 간단한 기능입니다 -

    기능 getNumberFromCurrency (통화) { 반환 번호 (currency.replace (/ [$,] / g '')) } CONSOLE.LOG (getNumberFromCurrency ( '$ 1,000,000.99')) // 1000000.99

  18. from https://stackoverflow.com/questions/559112/how-to-convert-a-currency-string-to-a-double-with-jquery-or-javascript by cc-by-sa and MIT license