Exp/Java & Java Script
[Java] DecimalFormat으로 천단위에 점을 찍자
kilog
2024. 5. 15. 19:52
728x90
안녕하세요 ki입니다.
이번 Exp는 DecimalFormat입니다.
저는 은행권 프로젝트를 다수 참여했었는데 그중 많이 사용했던 클래스를 소개하려고 합니다.
이전 글에서 설명하면서 말씀드렸던 것 처럼 증명서 작업 중에도 사용하여 금액을 표시하기도 했습니다.
2024.05.14 - [Exp/Java & Java Script] - [JS] 숫자 금액을 한글 금액으로 바꾸기를 했다.
[JS] 숫자 금액을 한글 금액으로 바꾸기를 했다.
안녕하세요 ki입니다.이번 Exp는 자바스크립트를 이용한 숫자를 한글로 변환하는 방법입니다.저는 은행 프로젝트를 참여하며 증명서 작업을 참 많이 했습니다. 그중 "잔액증명서"라는 것도 알게
kkkkt.tistory.com
DecimalFormat
DecimalFormat은 java에 java.text에 NumberFormat을 상속받아 숫자의 형식을 패턴을 지정하여 원하는 형식으로 표시할 수 있습니다.
Ex
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#,###");
double num = 100000000;
String num2 = df.format(num);
System.out.print(num2);
}
}
위 코드로 DecimalFormat객체를 생성하여 format 메서드를 사용하여 형식을 변경할 수 있습니다.
format으로 변경 후에 결과는 문자열인 String타입으로 반환됩니다.
패턴's
패턴 | 설명 |
0 | 숫자가 없을때 0으로 표시 (ex : 0000) |
# | 숫자가 있을때 해당 자리 표시 (ex : ####) |
. | 소수점 구분 기호 또는 화폐 소수점 구분 기호 (ex : 000.0 / ###.#) |
- | 빼기 기호 (ex : -###.##) |
, | 단위 구분 기호 (ex : #,###) |
E | 지수표시 (ex : 0.00E0) |
; | 양수 하위 패턴과 음수 하위 패턴을 분리합니다. (ex : +#.##;-#.##) |
% | 100을 곱하여 백분율로 표시 (ex : #.###%) |
\u2030 | 1000을 곱하여 표시 (ex : \u2030####.##) |
\u00A4 | 통화 표시를 표시. (ex : \u00A4####.##) |
' | 접두사 또는 접미사에서 특수 문자를 인용하는 데 사용(ex : "'#'#"123 ) |
// 10진수 - 빈자리는 0으로 채움
double n = 12345.6789;
System.out.println(df.format(n)); // 출력값 : 12346
// 10진수 - 빈자리는 0으로 채움
df = new DecimalFormat("0.0");
System.out.println(df.format(n)); // 출력값 : 12345.7
// 10진수 - 빈자리는 0으로 채움
df = new DecimalFormat("000000.00000");
System.out.println(df.format(n)); // 출력값 : 012345.67890
// 10진수 - 빈자리는 채우지 않음
df = new DecimalFormat("#");
System.out.println(df.format(n)); // 출력값 : 12346
// 10진수 - 빈자리는 채우지 않음
df = new DecimalFormat("######.###");
System.out.println(df.format(n)); // 출력값 : 12345.679
// 10진수 - # 0 조합 / 단위구분을 위한 , 추가
df = new DecimalFormat("#,###.00000");
System.out.println(df.format(n)); // 출력값 : 12,345.67890
// 100을 곱한 후 문자에 % 붙임
df = new DecimalFormat("#.##%");
System.out.println(df.format(n)); // 출력값 : 1234567.89%
// 통화표시 \u00A4
df = new DecimalFormat("\u00A4####.##");
System.out.println(df.format(n)); // 출력값 : ₩12345.68
// NumberFormat을 이용하여 통화표시를 지정할 수 있다.
// Locale을 사용하여 국가 지정시 해당 국가의 통화기호 및 자리수 구분까지 된다.
NumberFormat nf = NumberFormat.getCurrencyInstance( Locale.KOREA );
// 소수점 2자리까지 지정
nf.setMaximumFractionDigits(2);
System.out.println(nf.format(n)); // 출력값 : ₩12,345.68
주요 메서드
메소드 | 설명 |
format(Object number) | 숫자를 지정된 형식에 맞게 문자열로 변환 |
parse(String source) | 자열을 Number 객체로 변환 |
setDecimalFormatSymbols(DecimalFormatSymbols newSymbols) | 형식화에 사용되는 기호를 설정 |
setMaximumFractionDigits(int newValue) | 소수점 이하 최대 자릿수를 설정 |
setMinimumFractionDigits(int newValue) | 소수점 이하 최소 자릿수를 설정 |
setMaximumIntegerDigits(int newValue) | 정수 부분의 최대 자릿수를 설정 |
setMinimumIntegerDigits(int newValue) | 정수 부분의 최소 자릿수를 설정 |
setGroupingUsed(boolean newValue) | 그룹화(천 단위 구분 기호) 사용 여부를 설정 |
setRoundingMode(RoundingMode roundingMode) | 반올림 모드를 설정 (RoundingMode.UP RoundingMode.DOWN RoundingMode.HALF_UP) |
getDecimalFormatSymbols() | 현재 DecimalFormatSymbols 객체를 반환 |
getMaximumFractionDigits() | 소수점 이하 최대 자릿수를 반환 |
getMinimumFractionDigits() | 소수점 이하 최소 자릿수를 반환 |
getMaximumIntegerDigits() | 정수 부분의 최대 자릿수를 반환 |
getMinimumIntegerDigits() | 정수 부분의 최소 자릿수를 반환 |
isGroupingUsed() | 천 단위 구분 기호 사용 여부를 반환(boolen) |
getRoundingMode() | 현재 설정된 반올림 모드를 반환 |
setParseBigDecimal(boolean newValue) | true로 설정하면 parse 메소드가 BigDecimal을 반환 |
isParseBigDecimal() | parseBigDecimal 설정 여부를 반환 |