프로그래밍/웹 관련

[javascript] 숫자에 천단위 마다 콤마(,) 넣기

채윤아빠 2018. 10. 26. 16:37
728x90
반응형



특정 숫자에 천단위 마다 콤마를 넣기 위하여 다음 정규표현식을 이용하면 간단하게 해결된다.
아래와 같이 하면, 정수형에 대해서는 아무런 문제가 발생하지 않으나, 소수점이 있는 실수형의 경우에는 오류가 발생하게 된다.

function toCommaString( number ) {
    var regexp = /\B(?=(\d{3})+(?!\d))/g;
    return number.toString().replace( regexp, ',' );
}

그래서 아래와 같이, 정수형과 실수형을 구분하여 함수를 만들어서 사용한다.

function toCommaStringF( number ) {
    var number_string = number.toString();
    var number_parts = number_string.split('.');
    var regexp = /\B(?=(\d{3})+(?!\d))/g;
    if (number_parts.length > 1) {
        return number_parts[0].replace( regexp, ',' ) + '.' + number_parts[1];
    }
    else {
        return number_string.replace( regexp, ',' );
    }
}

// 사용예
console.log("Test = " + toCommaStringF(123456789));
console.log("Test = " + toCommaStringF(123456789.1234567));

// 실행결과
Test = 123,456,789
Test = 123,456,789.1234567

숫자가 실수형인지 정수형인지 확정할 수 없는 경우에는 실수형 함수를 호출하여, 실수형에 대한 오류를 방지한다.