일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 공개키 암호
- 알고리즘
- 클래스 패스
- jvm
- BufferedWrite
- LANG
- try&catch
- 백준
- bubble-sort
- 재귀호출기본
- 현대암호
- 프로그래밍
- 자동 형변환
- 예외처리
- 2884
- HTML
- 암호론
- JSP
- lang package
- 객체지향
- class
- OOP
- 백준 알고리즘
- 소수판정
- 자료구조
- 형변환 연산자
- 연결된 예외
- 객체
- 디렉티브
- java
Archives
- Today
- Total
코드일기장
[Java] 형식화 클래스, DecimalFormat 본문
java.text 패키지의 DecimalFormat, SimpleDateFormat
- 숫자와 날짜를 원하는 형식으로 쉽게 출력이 가능하다. (숫자, 날짜 -> 형식 문자열)
import java.text.DecimalFormat;
double number = 1234567.89;
DecimalFormat df = new DecimalFormat("#.#E0");
String str = df.format(number); //str="1.2E6"
DecimalFormat 클래스의 format 메서드를 이용하면 숫자형이 문자열로 바뀔 수 있다.
이 반대도 가능하다.
- 형식 문자열에서 숫자와 날짜를 뽑아내는 기능(형식 문자열->숫자, 날짜)
DecimalFormat df2 = new DecimalFormat("####.##");
Number num = df2.parse("1234.56");
double d = num.doubleValue(); //d=1234.56
parse메서드를 사용하면 문자열이 넘버 타입의 객체로 바꿀 수 있다. (Number는 모든 숫자의 래퍼클래스의 최고 조상이다.)
참고로(Integer.parseInt(), Float.parseFloat() 등은 콤마(,)가 포함된 문자열을 숫자로 변환 못한다.)
DecimalFormat
- 숫자를 형식화할 때 사용 (숫자 -> 형식 문자열)
기호 | 의미 | 패턴 | 결과(1234567.89) |
0 | 10진수 (값이 없을 때는 0) | 0 0.0 0000000000.0000 |
1234568 1234567.9 0001234567.8900 |
# | 10진수 | # #.# ##########.#### |
1234568 1234567.9 1234567.89 |
. | 소수점 | #.# | 1234567.9 |
- | 음수부호 | #.#- -#.# |
1234567.9- -1234567.9 |
, | 단위 구분자 | #,###,###.# #,####,## |
1,234,567.9 1,23,45,68 |
E | 지수 기호 | #E0 0E0 ##E0 00E0 ####E0 0000E0 #.#E0 0.0E0 0.00000000E0 00.0000000E0 000.00000E0 #.########E0 #.#######E0 ###.######E0 |
생략 |
; | 패턴구분자 | #,###,##+;#,###,##- | 1,234,567.89+ 1,234,567.89- |
% | 퍼센트 | #.#% | 123456789% |
\u2030 | 퍼밀(퍼센트* 10) | #.#\u2030 | 1234567890% |
\u00a4 | 통화 | \u00a4 #,### | \ 1,234,568 |
' | escape문자 | '#' #,### "#,### |
#1,234,568 |
여기서 의문인 것은 실수 값 1234567.89 Decimal패턴 #일 때 출력 결과 1234568 값이 나온다 소수점이 반올림되어서 1234567이 아닌 1234568이 나온 것이다. 만약 실수 값이 1234567.39라면 1234567이 나올 것이다.
DecimalFormat예제
import java.text.DecimalFormat;
public class DecimalClass {
public static void main(String[] args){
DecimalFormat df1 = new DecimalFormat("#,###.##");
DecimalFormat df2 = new DecimalFormat("#.###E0");
try {
Number num = df1.parse("1,234,567.89");
System.out.print("1,234,567,89 -> ");
double d = num.doubleValue();
System.out.print(d+" -> ");
System.out.print(df2.format(num));
}catch(Exception e) {
e.printStackTrace();
}
}
}
1,234,567,89 -> 1234567.89 -> 1.235E6
'Java' 카테고리의 다른 글
[Java] Iterator (0) | 2022.07.13 |
---|---|
[Java] SimpleDateFormat() (0) | 2022.03.06 |
[Java] Calendar 예제 (0) | 2022.03.03 |
[Java] Calendar 클래스 (0) | 2022.02.25 |
[Java] StringBuffer의 생성자와 메서드 (0) | 2022.02.18 |
Comments