GitHub

https://github.com/Backcoder-June

BackCoder 기록 그리고 숙달

Back to the Java

DecimalFormat 출력 포맷 맞추기

Backcoder 2022. 7. 4. 20:09

코딩테스트를 하다보면, 자리수맞추는게 짜증날때가 있다. 

소수점 3자리까지 출력하라고 해서 

Math.round 로 3자리까지 출력하게 만들었는데, 

값이 있을 때는 40.345 세자리로 잘 나오지만 

40.000 이 나올때는 웬걸 갑자기 40.0 으로 뽑아낸다. (double 이 기본적으로 int로 딱떨어지면 .0 까지만 뽑아준다)  

이런 자잘한 포맷 맞추느라 시간이 뺏기면 짜증이난다.

이젠 고민없이 DecimalFormat을 이용해보자 

 

 

<  DecimalFormat  >         =>  숫자일때 쓰는 포맷 

- ( 유의 ) Decimalformat 은 String 타입으로 리턴한다.   

double num = 1234567.89; 
DecimalFormat df = new DecimalFormat("###,###.##"); 
#  => 자릿수 규칙만 정해놓는것, /  정수 - 3자리마다 끊어라 / 소수점 아래는 소수점 두자리까지 표시해라 / 
        ( 소수점 자리 반올림 자동적용됨 )
sout( df.format ( num ) );  => 1,234,567.89                                                           
                                              11,234,567.89 (o) 
                                            111,234,567.89  (o)  

#은 기본적인 포맷만 정해준 것. 자릿수가 모자라면 모자란대로 그 포맷으로 그냥 집어넣음 

 

0은 꽉 채우기용 
DecimalFormat df = new DecimalFormat("000,000.#"); 
=> 자리가 남으면 반드시 0으로 채워라 
 34567.84  => 034,567.8 

 - 0으로 채우기 쓰려면 000000.00 으로만 해야한다.  /  # 하고 못섞음 ( 0##,##.## - 불가능 ) 
 - 정수랑 소수는 구분됨 =>  "##.00" 

                                           "000.##"

                                          "000.00" 가능 

- 음수 양수     + A; , - A;
DecimalFormat("+ ###,###.# ; - ###.###.# ;")          
이렇게 음수/양수 두가지 버전으로 포맷을 등록해두면 => 양수, 음수 들어올때 알아서 찾아서 들어감 

 

써먹어보자. 

double num =  40;            =>  40.0

DecimalForamt df = new DecimalFroamt("#.000")           // 소수점 자리 000 으로  줘서, 무조건 000 채우게 해둔다. 

df.format(num); => 40.000  

이런식으로 원하는 포맷으로 뽑아낼수있다!