코딩테스트를 하다보면, 자리수맞추는게 짜증날때가 있다.
소수점 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
이런식으로 원하는 포맷으로 뽑아낼수있다!
'Back to the Java' 카테고리의 다른 글
Thread 클래스 / 멀티쓰레드 / Runnable / Priority / sleep / join / synchronized / (0) | 2022.07.06 |
---|---|
날짜 시간 / Date => Calendar + SimpleDateFormat => LocalDate (0) | 2022.07.04 |
Wrapper 클래스 (0) | 2022.07.04 |
System 클래스 / Class 클래스 (0) | 2022.07.04 |
String 메소드 / subString / charAt / split / contains / indexOf / matches / Tokeni (0) | 2022.07.04 |