DecimalFormat 클래스
NumberFormat 클래스와는 달리, DecimalFormat 클래스는 new 연산자를 사용하여 객체를 생성한다.
DecimalFormat 클래스는 format 메소드를 사용하여 특정 패턴으로 값을 포맷할 수 있다. (반환 값 String)
지정할 수 있는 패턴 형식은 '0' 과 '#'을 사용 하여 지정한다.
예를 들어, '0.###', '000.###', '00.#' 등으로 패턴을 지정할 수 잇다.
'0' 은 해당 자리수는 값이 최소한으로 있어야 되며, #은 최대한 해당 소수점 자리수 까지(반올림하여) 보여준다.
예를 들어, 78.53981633 일 경우
'0.###' : 78.54 (78.540 이므로 0은 출력되지 않는다.)
'000.##' : 078.54
'00.#' : 78.5
해당 패턴을 지정하여 DecimalFormat의 사용 방법은 아래와 같다.
DecimalFormat fmt = new DecimalFormat("0.###");
String decimal = fmt.format(78.539816);
위와 같이 사용하면 decimal 에는 78.54 가 반환된다.
DecimalFormat의 pattern을 변경하고 싶을 때는 void applyPattern(String pattern)을 사용한다.
fmt.applyPattern("000.###") 으로 변경하면, 이후의 포맷은 변경된 Pattern이 적용된다.
아래의 예제를 보자.
import java.text.DecimalFormat; import java.util.Scanner; public class DecimalFormatTest { public static void main(String[] args) { int radius; double area, circumference; Scanner scan = new Scanner(System.in); // 원의 반지름을 입력받는다. System.out.print("원의 반지름을 입력하세요 : "); radius = scan.nextInt(); // 원의 넓이 : 반지름의 제곱 * 파이 area = Math.PI * Math.pow(radius, 2); // 원의 길이 : 지름(반지름*2) * 파이 circumference = 2 * Math.PI * radius; // 원의 넓이와 길이 값을 출력한다. System.out.println("원의 넓이 : " + area); System.out.println("원의 길이 : "+circumference); System.out.println(""); // DecimalFormat으로 "0.###" 패턴을 생성한다. DecimalFormat fmt = new DecimalFormat("0.###"); System.out.println("Format 적용 후 (0.###)"); // 원의 넓이와 길이에 "0.###" 패턴을 적용하여 출력한다. System.out.println("원의 넓이(Format적용) : " + fmt.format(circumference)); System.out.println(""); // DecimalFormat 패턴을 "000.#" 으로 변경한다. fmt.applyPattern("000.#"); System.out.println("Format 변경 후 (000.#)"); // 원의 넓이와 길이에 "000.#" 패턴을 적용하여 출력한다. System.out.println("원의 넓이(Format 변경 후) : " + fmt.format(circumference)); } } |
* 실행 결과
Decimal 패턴에 관하여 형식은 "0"과 "#" 외에도 더 있다.
자세한 내용은 JAVA API DOC을 참고 하자.
출처 : http://hyeonstorage.tistory.com/163
'프로그래밍 > JAVA 프로그래밍 초급' 카테고리의 다른 글
Java Map 반복(Iteration)시키는 3가지 방법 (0) | 2014.07.18 |
---|---|
[java/jsp] setAutoCommit(false) 에 대해서... (0) | 2014.07.09 |
[자바 네트워크][newtwork] 기본 코드들 (0) | 2014.07.08 |
[자바][네트워크]java.net.*; 패키지의 InetAddress.getAllByName() 사용 (0) | 2014.07.03 |
java.lang.NoClassDefFoundError 이런 에러가 나올 때 (0) | 2014.07.01 |