[JAVA] DecimalFormat 클래스

2019. 9. 30. 15:19 JAVA/Java

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(area));
        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(area));
        System.out.println("원의 길이(Format 변경 후) : "
                           + fmt.format(circumference));
       
    }
}


* 실행 결과





Decimal 패턴에 관하여 형식은 "0"과 "#" 외에도 더 있다.


자세한 내용은 JAVA API DOC을 참고 하자.


DecimalFormatTest.zip


출처: https://hyeonstorage.tistory.com/163?category=557602 [개발이 하고 싶어요]