복붙노트

[JQUERY] C 번호와 유사한 자바 스크립트의 형식 번호

JQUERY

C 번호와 유사한 자바 스크립트의 형식 번호

해결법


  1. 1.당신은 아마 JQuery와 NumberFormatter는 플러그인을 살펴해야한다 :

    당신은 아마 JQuery와 NumberFormatter는 플러그인을 살펴해야한다 :

    JQuery와 수 포맷터

    그리고이 질문 :

    형식 번호에 자바 스크립트 쉬운 방법


  2. 2.일반적으로

    일반적으로

    에서 jQuery를


  3. 3.예, 예를 들어 제대로 자바 스크립트 형식 번호에 대한 방법은 확실히있다 :

    예, 예를 들어 제대로 자바 스크립트 형식 번호에 대한 방법은 확실히있다 :

    var val=2489.8237
    
    val.toFixed(3) //returns 2489.824 (round up)
    val.toFixed(2) //returns 2489.82
    val.toFixed(7) //returns 2489.8237000 (padding)
    

    variablename.toFixed의 사용으로.

    그리고 또 다른 기능에서는 toPrecision있다 (). 자세한 내용을 위해 당신은 또한 방문 할 수 있습니다

    http://raovishal.blogspot.com/2012/01/number-format-in-javascript.html


  4. 4.여기서 문자열 포맷 정수 쉼표를 추가하는 간단한 JS 함수이다. 그것은 정수 또는 10 진수 번호를 처리합니다. 당신은 그것을 숫자 나 문자열 중 하나를 전달할 수 있습니다. 그것은 분명히 문자열을 반환합니다.

    여기서 문자열 포맷 정수 쉼표를 추가하는 간단한 JS 함수이다. 그것은 정수 또는 10 진수 번호를 처리합니다. 당신은 그것을 숫자 나 문자열 중 하나를 전달할 수 있습니다. 그것은 분명히 문자열을 반환합니다.

    function addCommas(str) {
        var parts = (str + "").split("."),
            main = parts[0],
            len = main.length,
            output = "",
            first = main.charAt(0),
            i;
    
        if (first === '-') {
            main = main.slice(1);
            len = main.length;    
        } else {
            first = "";
        }
        i = len - 1;
        while(i >= 0) {
            output = main.charAt(i) + output;
            if ((len - i) % 3 === 0 && i > 0) {
                output = "," + output;
            }
            --i;
        }
        // put sign back
        output = first + output;
        // put decimal part back
        if (parts.length > 1) {
            output += "." + parts[1];
        }
        return output;
    }
    

    다음은 테스트 케이스의 집합입니다 : http://jsfiddle.net/jfriend00/6y57j/

    http://jsfiddle.net/jfriend00/sMnjT/ : 당신은이 이전 jsFiddle에서 사용되는 것을 볼 수 있습니다. 당신은 "자바 스크립트 추가 쉼표"에 대한 간단한 구글 검색으로 너무 진수를 처리하는 기능을 찾을 수 있습니다.

    숫자를 문자열로 변환하는 여러 가지 방법을 수행 할 수 있습니다. 가장 쉬운 문자열에 추가 단지입니다 :

    var myNumber = 3;
    var myStr = "" + myNumber;   // "3"
    

    당신의 jsFiddle의 컨텍스트 내에서이 줄을 변경하여 카운터에 쉼표를 얻을 것입니다 :

    jTarget.text(current);
    

    이에:

    jTarget.text(addCommas(current));
    

    당신이 여기서 일하는 볼 수 있습니다 http://jsfiddle.net/jfriend00/CbjSX/


  5. 5.나는 간단한 함수를 (또 다른 jQuery를 필요 플러그인이 없습니다!) 숫자로 시작하는 숫자가 아닌 경우 변환은 소수에 숫자가 문자열이나 빈 문자열을 분리 썼다 :

    나는 간단한 함수를 (또 다른 jQuery를 필요 플러그인이 없습니다!) 숫자로 시작하는 숫자가 아닌 경우 변환은 소수에 숫자가 문자열이나 빈 문자열을 분리 썼다 :

    function format(x) {
        return isNaN(x)?"":x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    }
    

    포맷 (578,999); 578999 결과

    포맷 (10); 10 결과

    대신 쉼표의 소수점을하려면 단순히 소수점와 코드에 쉼표를 교체합니다.

    코멘트 중 하나는 정확하게 당신이 아니라 포인트를 떠 작동 할 수있는 몇 가지 작은 adaptions와 정수에 대해이 단지 작품을 말했다 :

    function format(x) {
        if(isNaN(x))return "";
    
        n= x.toString().split('.');
        return n[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",")+(n.length>1?"."+n[1]:"");
    }
    

  6. 6.여기에 몇 가지 솔루션은 모든 당신이 사본을 원하는 테스트에 붙여 넣으면 테스트 스위트, 테스트 스위트 및 벤치 마크 포함,이 요점을 시도 전달합니다.

    여기에 몇 가지 솔루션은 모든 당신이 사본을 원하는 테스트에 붙여 넣으면 테스트 스위트, 테스트 스위트 및 벤치 마크 포함,이 요점을 시도 전달합니다.

    https://stackoverflow.com/a/14428340/1877620에 대한 자료 만 수정에는 소수점이없는 경우.

    if (typeof Number.prototype.format === 'undefined') {
        Number.prototype.format = function (precision) {
            if (!isFinite(this)) {
                return this.toString();
            }
    
            var a = this.toFixed(precision).split('.');
            a[0] = a[0].replace(/\d(?=(\d{3})+$)/g, '$&,');
            return a.join('.');
        }
    }
    
    if (typeof Number.prototype.format1 === 'undefined') {
        Number.prototype.format1 = function (precision) {
            if (!isFinite(this)) {
                return this.toString();
            }
    
            var a = this.toFixed(precision).split('.'),
                // skip the '-' sign
                head = Number(this < 0);
    
            // skip the digits that's before the first thousands separator 
            head += (a[0].length - head) % 3 || 3;
    
            a[0] = a[0].slice(0, head) + a[0].slice(head).replace(/\d{3}/g, ',$&');
            return a.join('.');
        };
    }
    
    if (typeof Number.prototype.format2 === 'undefined') {
        Number.prototype.format2 = function (precision) {
            if (!isFinite(this)) {
                return this.toString();
            }
    
            var a = this.toFixed(precision).split('.');
    
            a[0] = a[0]
                .split('').reverse().join('')
                .replace(/\d{3}(?=\d)/g, '$&,')
                .split('').reverse().join('');
    
            return a.join('.');
        };
    }
    
    if (typeof Number.prototype.format3 === 'undefined') {
        Number.prototype.format3 = function (precision) {
            if (!isFinite(this)) {
                return this.toString();
            }
    
            var a = this.toFixed(precision).split('');
            a.push('.');
    
            var i = a.indexOf('.') - 3;
            while (i > 0 && a[i-1] !== '-') {
                a.splice(i, 0, ',');
                i -= 3;
            }
    
            a.pop();
            return a.join('');
        };
    }
    
    console.log('======== Demo ========')
    var n = 0;
    for (var i=1; i<20; i++) {
        n = (n * 10) + (i % 10)/100;
        console.log(n.format(2), (-n).format(2));
    }
    

    우리는 사용자 정의 천 단위 구분 기호 또는 소수 구분 기호를 원하는 경우에, 사용) (대체 :

    123456.78.format(2).replace(',', ' ').replace('.', ' ');
    
    function assertEqual(a, b) {
        if (a !== b) {
            throw a + ' !== ' + b;
        }
    }
    
    function test(format_function) {
        console.log(format_function);
        assertEqual('NaN', format_function.call(NaN, 0))
        assertEqual('Infinity', format_function.call(Infinity, 0))
        assertEqual('-Infinity', format_function.call(-Infinity, 0))
    
        assertEqual('0', format_function.call(0, 0))
        assertEqual('0.00', format_function.call(0, 2))
        assertEqual('1', format_function.call(1, 0))
        assertEqual('-1', format_function.call(-1, 0))
        // decimal padding
        assertEqual('1.00', format_function.call(1, 2))
        assertEqual('-1.00', format_function.call(-1, 2))
        // decimal rounding
        assertEqual('0.12', format_function.call(0.123456, 2))
        assertEqual('0.1235', format_function.call(0.123456, 4))
        assertEqual('-0.12', format_function.call(-0.123456, 2))
        assertEqual('-0.1235', format_function.call(-0.123456, 4))
        // thousands separator
        assertEqual('1,234', format_function.call(1234.123456, 0))
        assertEqual('12,345', format_function.call(12345.123456, 0))
        assertEqual('123,456', format_function.call(123456.123456, 0))
        assertEqual('1,234,567', format_function.call(1234567.123456, 0))
        assertEqual('12,345,678', format_function.call(12345678.123456, 0))
        assertEqual('123,456,789', format_function.call(123456789.123456, 0))
        assertEqual('-1,234', format_function.call(-1234.123456, 0))
        assertEqual('-12,345', format_function.call(-12345.123456, 0))
        assertEqual('-123,456', format_function.call(-123456.123456, 0))
        assertEqual('-1,234,567', format_function.call(-1234567.123456, 0))
        assertEqual('-12,345,678', format_function.call(-12345678.123456, 0))
        assertEqual('-123,456,789', format_function.call(-123456789.123456, 0))
        // thousands separator and decimal
        assertEqual('1,234.12', format_function.call(1234.123456, 2))
        assertEqual('12,345.12', format_function.call(12345.123456, 2))
        assertEqual('123,456.12', format_function.call(123456.123456, 2))
        assertEqual('1,234,567.12', format_function.call(1234567.123456, 2))
        assertEqual('12,345,678.12', format_function.call(12345678.123456, 2))
        assertEqual('123,456,789.12', format_function.call(123456789.123456, 2))
        assertEqual('-1,234.12', format_function.call(-1234.123456, 2))
        assertEqual('-12,345.12', format_function.call(-12345.123456, 2))
        assertEqual('-123,456.12', format_function.call(-123456.123456, 2))
        assertEqual('-1,234,567.12', format_function.call(-1234567.123456, 2))
        assertEqual('-12,345,678.12', format_function.call(-12345678.123456, 2))
        assertEqual('-123,456,789.12', format_function.call(-123456789.123456, 2))
    }
    
    console.log('======== Testing ========');
    test(Number.prototype.format);
    test(Number.prototype.format1);
    test(Number.prototype.format2);
    test(Number.prototype.format3);
    
    function benchmark(f) {
        var start = new Date().getTime();
        f();
        return new Date().getTime() - start;
    }
    
    function benchmark_format(f) {
        console.log(f);
        time = benchmark(function () {
            for (var i = 0; i < 100000; i++) {
                f.call(123456789, 0);
                f.call(123456789, 2);
            }
        });
        console.log(time.format(0) + 'ms');
    }
    
    async = [];
    function next() {
        setTimeout(function () {
            f = async.shift();
            f && f();
            next();
        }, 10);
    }
    
    console.log('======== Benchmark ========');
    async.push(function () { benchmark_format(Number.prototype.format); });
    async.push(function () { benchmark_format(Number.prototype.format1); });
    async.push(function () { benchmark_format(Number.prototype.format2); });
    async.push(function () { benchmark_format(Number.prototype.format3); });
    next();
    

  7. 7.당신이 jQuery를 사용하지 않으려면, Numeral.js를 살펴

    당신이 jQuery를 사용하지 않으려면, Numeral.js를 살펴


  8. 8.첫째, JS에서 문자열로 정수를 변환하는 것은 정말 간단하다 :

    첫째, JS에서 문자열로 정수를 변환하는 것은 정말 간단하다 :

    // Start off with a number
    var number = 42;
    // Convert into a string by appending an empty (or whatever you like as a string) to it
    var string = 42+'';
    // No extra conversion is needed, even though you could actually do
    var alsoString = number.toString();
    

    당신이 문자열로 숫자를 가지고는 정수로 전환 될하려는 경우, 당신은 수레에 대한 정수와에서는 parseFloat (문자열)의에서는 parseInt (문자열)를 사용합니다. 이 함수는 모두 다음 원하는 정수 / 부동 소수점을 반환합니다. 예:

    // Start off with a float as a string
    var stringFloat = '3.14';
    // And an int as a string
    var stringInt = '42';
    
    // typeof stringInt  would give you 'string'
    
    // Get the real float from the string
    var realFloat = parseFloat(someFloat);
    // Same for the int
    var realInt = parseInt(stringInt);
    
    // but typeof realInt  will now give you 'number'
    

    무엇 정확히 등 추가하려고하는 것은, 귀하의 질문에서 나에게 확실하지 않다.


  9. 9.http://code.google.com/p/javascript-number-formatter/ :

    http://code.google.com/p/javascript-number-formatter/ :

    최신 정보

    그리고 토마스 그러나 여기에 한 줄 솔루션을 말한다 :

    (666.0).toLocaleString()
    numObj.toLocaleString([locales [, options]])
    

    이는 ECMA-262 5.1 판에 설명 :

    와 브라우저의 향후 버전에서 작동합니다 ...


  10. 10.예를 들면 :

    예를 들면 :

    var flt = '5.99';
    var nt = '6';
    
    var rflt = parseFloat(flt);
    var rnt = parseInt(nt);
    

  11. 11.jQuery를 사용하여.

    jQuery를 사용하여.

    $(document).ready(function()
     {
        //Only number and one dot
        function onlyDecimal(element, decimals)
        {
            $(element).keypress(function(event)
            {
                num = $(this).val() ;
                num = isNaN(num) || num === '' || num === null ? 0.00 : num ;
                if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57))
                {
                    event.preventDefault();
    
                }
                if($(this).val() == parseFloat(num).toFixed(decimals))
                {
                    event.preventDefault();
                }
            });
        }
    
         onlyDecimal("#TextBox1", 3) ;
    
    
    
    });
    


  12. 12.쉼표 후이 개 번호 진수를 얻으려면, 당신은 사용할 수 있습니다 :

    쉼표 후이 개 번호 진수를 얻으려면, 당신은 사용할 수 있습니다 :

    function nformat(a) {
       var b = parseInt(parseFloat(a)*100)/100;
       return b.toFixed(2);
    }
    

  13. 13.여기에 또 다른 버전입니다 :

    여기에 또 다른 버전입니다 :

    $.fn.digits = function () {
        return this.each(function () {
            var value = $(this).text();
            var decimal = "";
            if (value) {
                var pos = value.indexOf(".");
                if (pos >= 0) {
                    decimal = value.substring(pos);
                    value = value.substring(0, pos);
                }
                if (value) {
                    value = value.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
                    if (!String.isNullOrEmpty(decimal)) value = (value + decimal);
                    $(this).text(value);
                }
            }
            else {
                value = $(this).val()
                if (value) {
                    var pos = value.indexOf(".");
                    if (pos >= 0) {
                        decimal = value.substring(pos);
                        value = value.substring(0, pos);
                    }
                    if (value) {
                        value = value.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
                        if (!String.isNullOrEmpty(decimal)) value = (value + decimal);
                        $(this).val(value);
                    }
                }
            }
        })
    };
    

  14. 14.나는 간단한 함수를 만들어, 아마도 누군가가 그것을 사용할 수 있습니다

    나는 간단한 함수를 만들어, 아마도 누군가가 그것을 사용할 수 있습니다

    function secsToTime(secs){
      function format(number){
        if(number===0){
          return '00';
        }else {
          if (number < 10) {
              return '0' + number
          } else{
              return ''+number;
          }
        }
      }
    
      var minutes = Math.floor(secs/60)%60;
      var hours = Math.floor(secs/(60*60))%24;
      var days = Math.floor(secs/(60*60*24));
      var seconds = Math.floor(secs)%60;
    
      return (days>0? days+"d " : "")+format(hours)+':'+format(minutes)+':'+format(seconds);
    }
    

    이것은 다음 출력을 생성 할 수있다 :


  15. 15.경우 당신이보기에 대해이 아니라 계산을 위해 당신이 사용할 수있는 형식 번호로 원하는

    경우 당신이보기에 대해이 아니라 계산을 위해 당신이 사용할 수있는 형식 번호로 원하는

    function numberFormat( number ){
    
        var digitCount = (number+"").length;
        var formatedNumber = number+"";
        var ind = digitCount%3 || 3;
        var temparr = formatedNumber.split('');
    
        if( digitCount > 3 && digitCount <= 6 ){
    
            temparr.splice(ind,0,',');
            formatedNumber = temparr.join('');
    
        }else if (digitCount >= 7 && digitCount <= 15) {
            var temparr2 = temparr.slice(0, ind);
            temparr2.push(',');
            temparr2.push(temparr[ind]);
            temparr2.push(temparr[ind + 1]);
            // temparr2.push( temparr[ind + 2] ); 
            if (digitCount >= 7 && digitCount <= 9) {
                temparr2.push(" million");
            } else if (digitCount >= 10 && digitCount <= 12) {
                temparr2.push(" billion");
            } else if (digitCount >= 13 && digitCount <= 15) {
                temparr2.push(" trillion");
    
            }
            formatedNumber = temparr2.join('');
        }
        return formatedNumber;
    }
    

    입력 : {정수} 번호

    출력 : {문자열} 번호

    22,870 => 22,870 수 있다면

    22,87 만 => 수 2287xxxx (x는 무엇이든 할 수있다) 경우

    22,87 억 => 만약 번호 2287xxxxxxx

    22,87 조 => 만약 번호 2287xxxxxxxxxx

    당신은 아이디어를 얻을


  16. 16.더 jfriend00의 대답에 난 다음에 그 / 그녀의 대답을 확장했다 (I는 의견에 포인트가 부족하지 말자)

    더 jfriend00의 대답에 난 다음에 그 / 그녀의 대답을 확장했다 (I는 의견에 포인트가 부족하지 말자)

    로그 함수 (인수) { VAR STR = ""; 경우 (나는 <에서 arguments.length; VAR 난 0 = I ++) { 만약 {(인수 [I] === "개체"대해서 typeof) STR + = JSON.stringify (인수 [I]); } 다른 { STR + = 인자 [I]; } } VAR DIV = document.createElement ( "DIV"); div.innerHTML = STR; document.body.appendChild (DIV); } Number.prototype.addCommas = 함수 (STR) { 경우 (STR === 정의) { STR이 =; } VAR 부품 = (STR + "") .split를 ( "."), 주요 부품 = [0], LEN = main.length, 출력 = "" 제 main.charAt = (0) 나는; {- ( ''=== 첫째)의 경우 메인 = main.slice (1); LEN = main.length; } 다른 { 제 = ""; } 난 렌 = - 1; 반면 (I> = 0) { 출력 = main.charAt (I) + 출력; 경우 (LEN (- Ⅰ) 3 % === 0 && I> 0) { 출력 = ""+ 출력; } --나는; } // 넣어 기호 다시 출력은 제 + 출력 =; // 넣어 진 부분 다시 경우 (parts.length> 1) { 출력 + = "." 부품 + [1]; } 출력을 리턴; } VAR의 테스트 케이스 = 1, 12, 123, -1234, 12345, 123456, -1234567, 12345678, 123456789 -1.1, 12.1, 123.1, 1234.1, -12345.1, -123456.1, -1234567.1, 12345678.1, 123456789.1 ]; 경우 (나는


  17. 17.나는 일반적인 경우에 대한 로케일 numbro 기반의 서식 및 번호-format.js를 제안 할 수 있습니다. 사용 케이스에 따라 두 가지의 조합이 도움이 될 수 있습니다.

    나는 일반적인 경우에 대한 로케일 numbro 기반의 서식 및 번호-format.js를 제안 할 수 있습니다. 사용 케이스에 따라 두 가지의 조합이 도움이 될 수 있습니다.


  18. 18.다음과 같은 방법으로 작업을 수행 할 수 있습니다 당신은 단지 수를 포맷하지 않습니다하지만 당신은 또한 많은 소수점 자리가 표시하는 방법을 매개 변수로 전달할 수 있도록 사용자 정의 진수와 마일 구분을 설정합니다.

    다음과 같은 방법으로 작업을 수행 할 수 있습니다 당신은 단지 수를 포맷하지 않습니다하지만 당신은 또한 많은 소수점 자리가 표시하는 방법을 매개 변수로 전달할 수 있도록 사용자 정의 진수와 마일 구분을 설정합니다.

    function format(number, decimals = 2, decimalSeparator = '.', thousandsSeparator = ',') {
        const roundedNumber = number.toFixed(decimals);
        let integerPart = '', fractionalPart = '';
        if (decimals == 0) {
            integerPart = roundedNumber;
            decimalSeparator = '';
        } else {
            let numberParts = roundedNumber.split('.');
            integerPart = numberParts[0];
            fractionalPart = numberParts[1];
        }
        integerPart = integerPart.replace(/(\d)(?=(\d{3})+(?!\d))/g, `$1${thousandsSeparator}`);
        return `${integerPart}${decimalSeparator}${fractionalPart}`;
    }
    

    사용하다:

    let min = 1556454.0001;
    let max = 15556982.9999;
    console.time('number format');
    for (let i = 0; i < 15000; i++) {
        let randomNumber = Math.random() * (max - min) + min;
    
        let formated = format(randomNumber, 4, ',', '.'); // formated number
    
        console.debug('number: ', randomNumber, 'formated: ', formated);
    }
    console.timeEnd('number format');
    
  19. from https://stackoverflow.com/questions/1068284/format-numbers-in-javascript-similar-to-c-sharp by cc-by-sa and MIT license