소수점 표시 질문 드립니다.

소수점 표시 질문 드립니다.

QA

소수점 표시 질문 드립니다.

답변 5

본문

안녕하세요.

소수점 표현하는데 있어 에로사항이 있어 질문 드립니다.

예를들어 50000.111에 자릿수 ,를 찍어야 해서  number_format을 사용하면 50,000으로 출력이 되어서 number_format(50000.111 , 3)을 하면 50,000.111이 출력이 되는데 문제는 소수점이 없을경우 50,000.000이 출력이 되어버린다는 겁니다...

소수점이 없는 숫자일경우는 출력이 안되도록 50,000만 출력이 되고 소수가 있을경우에만 50,000.111 이렇게 표시하려면 어떤 방법으로 해야될까요?

이 질문에 댓글 쓰기 :

답변 5

아래처럼 함수를 만들고 조건문 사용하시면 됩니다.


function x_number_format ($number , $decimals = 0 , $dec_point = "." , $thousands_sep = ",") {
    if(!is_numeric($number)) return;
    if(is_float($number)) {
        return number_format($number, $decimals, $dec_point, $thousands_sep);
    } else {
        return number_format($number, 0, $dec_point, $thousands_sep);
    }
}
echo x_number_format(50000.111, 3);
echo "\n";
echo x_number_format(50000, 3);
echo "\n";

// 참고로 정규식으로 .000으로 끝나면 제거하는 방법 남깁니다.
echo preg_replace('/\.0+$/', '', number_format('50000.111', 3)); // 50,000.111
echo preg_replace('/\.0+$/', '', number_format('50000', 3)); // 50,000

$nn= 50000;

echo is_float($ nn)? number_format($nn, 3) : number_format($nn);

 

결과는 아래와 같습니다

 

$nn=50000 ==> 50,000

$nn=50000.123 ==> 50,000.123

$nn=50000.1234 ==> 50,000.123

$nn=50000.1235 ==> 50,000.124

$nn=50000.12 ==> 50,000.120

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 13
© SIRSOFT
현재 페이지 제일 처음으로