자바(Java)/JAVA 2SE

숫자 출력 포맷 결정하기

본클라쓰 2010. 12. 1. 14:49

 일반적으로 문자열을 출력할 때 System.out.print() 메소드나 System.out.println() 메소드를 사용한다. 하지만 숫자형 데이터를 출력할 때 포맷을 지정하여 출력하고 싶다면 java.io 패키지에 있는 print()메소드와 println()메소드를 대신해 formatting 메소드를 사용해야 한다.

 

 숫자 포맷과 관련하여 java.io 패키지에는 format()메소드와 printf()메소드가 있는데 두 메소드는 똑같은 작용을 한다.

 

public PrintStream format(String format, Object arg...);

 

 예를 들어 아래와 같이 사용할 수 있다.

 

System.out.format("실수값은 %f, 정수값은 %d, 문자값은 %s 이다", floatVar, intVar, stringVar);

 

 이 때 전달하는 인자 두개는, 첫 번째 인자는 출력할 포맷을 지정하고, 두 번째 인자는 해당 포맷에 들어갈 숫자값이다. 숫자형의 포맷을 지정할 땐느 퍼센트 부호(%)를 앞에 붙여 변환의 시작을 알리고 포맷 형태를 작성한다. 포맷 형태의 문자 종류는 다음과 같다.  

   

변환값

설명

d

10진 정수형

f

실수형

n

줄바꿈

tB

날짜 형태(모든 날짜 값을 출력)

td, te

두자리 달과 일자를 출력

ty, tY

ty는 두자리의 년도를 tY는 네자리의 년도를 출력

tl

12시간 단위 시간

tm

두자리 분

tp

am/pm을 출력

 

 이와 함께 10진 포맷을 결정하는 포맷 클래스도 있는데 java.text.DecimalFormat 클래스이다. DecimalFormat 클래스의 사용방법은 아래와 같다.

 

DecimalFormat myFormat = new DecimalFormat("###,###.###");

System.out.println("출력할 값은 12345678이고, 포맷은 ###,###.###일 때 출력되는 값은 " + myFormat.format(12345678) +"이다"); 

 

위 코드의 출력결과는 다음과 같다. 출력할 값은 12345678이고, 포맷은 ###,###.###일 때 출력되는 값은 12,345.678이다.

 

DecimalFormat 클래스의 패턴 출력 양식은 아래와 같다.

 

패턴

출력

123456.789

###,###.###

123,456.789

123456.789

###.##

123456.79

123.78

000000.00

000123.78

12345.67

$###,###.###

$12,345.67