소수점 표시 질문 드립니다.
본문
안녕하세요.
소수점 표현하는데 있어 에로사항이 있어 질문 드립니다.
예를들어 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";
값의 나머지를 체크해서 나머지가 0이면
값만 넘기고
0이 아니면
소수점 포함해서 찍도로 넘겨주면 어떨까요?
방법이야 많이 있겠지만
$num = 50000.111;
$num = sprintf('%0.3f', $num);
$num = number_format ($num, 3);
echo $num; // 결과값 : 50,000.111
// 참고로 정규식으로 .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
답변을 작성하시기 전에 로그인 해주세요.