테스트 사이트 - 개발 중인 베타 버전입니다

소수점 표시 질문 드립니다. 채택완료

kujira 5년 전 조회 2,517

안녕하세요.

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

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

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

댓글을 작성하려면 로그인이 필요합니다.

답변 5개

채택된 답변
+20 포인트

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

</p>

<p>function x_number_format ($number , $decimals = 0 , $dec_point = "." , $thousands_sep = ",") {

    if(!is_numeric($number)) return;</p>

<p>    if(is_float($number)) {

        return number_format($number, $decimals, $dec_point, $thousands_sep);

    } else {

        return number_format($number, 0, $dec_point, $thousands_sep);

    }

}</p>

<p>echo x_number_format(50000.111, 3);

echo "\n";

echo x_number_format(50000, 3);

echo "\n";</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

5년 전

$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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

B
5년 전

</p>

<p>// 참고로 정규식으로 .000으로 끝나면 제거하는 방법 남깁니다.</p>

<p>echo preg_replace('/\.0+$/', '', number_format('50000.111', 3)); // 50,000.111</p>

<p>echo preg_replace('/\.0+$/', '', number_format('50000', 3)); // 50,000</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

5년 전

방법이야 많이 있겠지만 

 

$num = 50000.111;
$num = sprintf('%0.3f', $num);
$num = number_format ($num, 3);

echo $num; // 결과값 : 50,000.111

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

5년 전

값의 나머지를 체크해서   나머지가 0이면

 

값만 넘기고

 

0이 아니면

 

소수점 포함해서 찍도로 넘겨주면 어떨까요?

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인