본문 바로가기
PHP

[PHP] number_format 함수로 숫자 포맷팅하기.

by teamnova 2023. 3. 8.

안녕하세요. 숫자를 사용하다가보면 천단위로 콤마처리를 하거나 소수점 자리를 표시해주는 등, 형식에 맞춰 포맷을 해줘야하는 경우가 있는데, 오늘은 PHP의 내장함수 number _format으로 이 부분을 어떻게 처리하는지에 대해 함께 살펴보려고합니다. 

 

우선 number_format() 함수와 함수가 가질 수 있는 파라미터, 그리고 파라미터의 의미에 대해 봅시다. 

 


number_format(

$숫자 : 포맷을 진행할 숫자 값 (String도 가능)
$데시멀 : 소수점 뒤 표시할 자릿 수 (기본값 0)
$데시멀 부호 : 소수점 부호 (기본값 "." ) 
$부호: 1000씩 숫자를 나눠서 표기할 때 사용할 부호 (기본값 " , ")
)

*$숫자 파라미터는 필수, 그 외 파라미터는 옵션이므로 생략가능하다. 
*php 버전 8.0부터는 파라미터 1개($숫자), 2개($숫자,$데시멀), 4개($숫자,$데시멀,$데시멀부호,$부호)사용이 가능하나, 3개 사용은 불가능하다.

 

(1) 첫번째 파라미터 $숫자 입력 시 String 값도 가능합니다. 단, 인식할 수 없는 값이 들어가는 경우에는 오류가 나므로 입력값에 주의해야합니다. 

<?php

//Int와 String 값 모두 파라미터로 입력 가능.
echo number_format(123456789,3,"#","@");
//123@456@789#000 출력 됨.
echo number_format("123456789",3,"#","@");
//123@456@789#000 동일하게 출력

echo number_format("!13_#4");
//에러메시지 출력.
?>

 

(2) 첫번째 파라미터 입력 시, 소수점이 있는 값의 경우 두번째 파라미터를 설정해주지않으면 소수점 뒤의 값이 날아가는 문제가 생기므로 주의해야합니다. 단, 두번째 파라미터로 n번째 소수값까지 표기하겠다고 했을 때 n+1값에서 반올림되어 값이 표기 됩니다. 원래있는 소수자리보다 많은 값을 설정하게 되면 나머지는 0으로 표기됩니다.

<?php

//소수점이 찍힌 값이 들어간 경우.
echo number_format(123456.789);
//123,457 출력.
echo number_format("3.3");
//3 출력

//두번째 파라미터 입력 시
echo number_format(123456.789,3);
//123,456.789 출력
echo number_format(123456.789,2);
//반올림 되어서 123,456.79 출력.
echo number_format(123456.789,4);
//123,456.7890 출력.

?>

 

(3) 세번째 파라미터는 소수점 부분을 표기할 수 있는 값을 입력할 수 있습니다. 단, 위에 이미 한번 언급했 듯이 number_format의 파라미터는 1개,2개,4개 입력이 가능하니 세번째 파라미터를 입력하는 경우 마지막 파라미터까지 적어주어야합니다. 

<?php 
//세가지 파라미터만 적는 경우 에러발생.
echo number_format(123456.789,4,"@");
//에러코드 출력:PHP Warning: Wrong parameter count for number_format() in /home/gb881M/prog.php on line 3

//네가지 파라미터 모두 작성.
echo number_format(123456.789,4,"@",",");
//소수점 값이 @ 문자로 출력 됨.
//123,456@7890 출력.

 

(4) 네번째 파라미터로 1000단위씩 숫자를 표기하는 값을 지정해줄 수 있습니다. 

<?php
echo number_format(123456.789,4,".","★");
//123★456.7890 출력

echo number_format(123456.789,4,".","!");
//123!456.7890 출력

echo number_format(123456.789,4,".",",");
//123,456.7890 출력
?>

 

이렇게 php 내장함수 number_format을 사용하여 숫자를 특정 형식으로 포맷하여 표시하는 방법에 대해 살펴보았습니다. 

+) 자세한 내용은 아래 링크를 참고바랍니다.

 

https://www.php.net/manual/en/function.number-format.php

 

PHP: number_format - Manual

here is the code to convert number to Indonesian text, this code has limitation as is number_format function. sorry for this./** Created : Iwan Sapoetra - Jun 13, 2008* Project : Web* Package : cgaf**/function terbilang( $num ,$dec=4){    $stext = array(

www.php.net

https://www.w3schools.com/php/func_string_number_format.asp

 

PHP number_format() Function

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com