/
PHP number_format 으로 숫자 포맷팅 하기

PHP number_format 으로 숫자 포맷팅 하기

PHP 에는 숫자를 편리하게 포맷팅할 수 있는 number_format이라는 내장 함수가 있습니다.


예로 아래와 같은 float 형식의 숫자가 있을 경우 number_format() 을 거치면 천 단위마다 , 를 찍어서 보기 좋게 만들어 줍니다.

<?php

$num = 12345678.2354;
echo number_format ($num);

// "12,345,678"


number_format() 은 기본적으로 소수점 이하를 날려 버리므로 소수점을 표시하려면 2번째 파라미터로 표시할 소수점 자릿수를 지정해야 합니다.


<?php

$num = 12345678.2354;
echo number_format ($num, 2);

// "12,345,678.24"


위 코드는 소수점 2자리만 표시하고 3자리부터는 반올림하므로 .24 가 표시됩니다.


만약 3자리만 표시하도록 지정한다면 4자리가 4 이므로 버려지게 됩니다.

<?php

$num = 12345678.2354;
echo number_format ($num, 3);

// "12,345,678.235"


하지만 세계 각 국마다 숫자를 표시하는 방법은 다르며 예로 프랑스는 천 단위 구분자로 , 가 아닌 공백을 사용하고 소수점은 , 로 표시합니다.


number_format의 3번째는 소숫점을 표시할 문자를 지정하고 4번째는 천 단위 구분자를 지정하므로 아래 코드는 프랑스 식으로 숫자를 포맷팅합니다.

프랑스식 숫자 표현
<?php

$num = 12345678.2354;
echo number_format ($num, 3, ',', ' ');

// "12 345 678,235"


또 독일은  천 단위와 소숫점의 구분자를 바꿔서 사용합니다. 즉 천 단위 구분자로 . 을, 소숫점 구분자로는 , 를 사용합니다.

독일식 숫자 표현
<?php

$num = 12345678.2354;
echo number_format ($num, 3, ',', '.');

// "12.345.678,235"


이런 모든 형식을 기억할 수는 없으므로 locale 설정과 관련없이 제대로 된 숫자 포맷팅을 하려면 표시하려는 국가의 locale 로 설정을 변경한 후에 해당 값을 사용하도록 수정하면 됩니다.

<?php

// 표시하려는 국가로 locale 변경
setlocale (LC_ALL, 'de_DE.UTF-8');

$locale = localeconv ();

echo number_format($number,
    $locale['decimal_point'],
    $locale['decimal_point'],
    $locale['thousands_sep']
);

PHP의 number_format 은 locale 설정을 사용하지 않는지 setlocale() 을 해 준후에 localeconv() 로 설정을 얻어온 후에 사용해야 합니다.

ubuntu 에서 setlocale 이 실패할 경우 locale-gen 명령어로 해당 locale 을 생성해 줘야 합니다.

sudo locale-gen fr_FR.UTF-8


Ref

Related content

PHP 7 의 Scalar type declarations 과 declare(strict_types = 1) 구문
PHP 7 의 Scalar type declarations 과 declare(strict_types = 1) 구문
More like this
사업자 등록 번호 검증 로직
사업자 등록 번호 검증 로직
More like this
엑셀(excel)에서 숫자를 한글로 변환하기
엑셀(excel)에서 숫자를 한글로 변환하기
More like this
php POST max upload size 조정
php POST max upload size 조정
More like this
PHPStorm 에서 신규 소스 파일 생성시 declare(strict_types=1) 자동으로 붙이기
PHPStorm 에서 신규 소스 파일 생성시 declare(strict_types=1) 자동으로 붙이기
More like this
PHPStorm/IntelliJ 팁
PHPStorm/IntelliJ 팁
More like this