NumberFormat

NumberFormat (숫자 형식화 추상 기본 클래스)

모든 숫자 형식의 추상 기본 클래스예요. 이 클래스는 숫자를 형식화하고 파싱하는 인터페이스를 제공해요. 또한 어떤 로케일이 숫자 형식을 갖고 있는지, 그 이름이 무엇인지 결정하는 메서드도 제공해요.

출처: Java API Reference

본문

NumberFormat은 어떤 로케일의 숫자든 형식화·파싱할 수 있게 도와줘요. 코드가 소수점, 천 단위 구분자, 특정 십진 숫자, 심지어 숫자 형식이 십진인지 여부까지 로케일 관례에서 완전히 독립적일 수 있어요.

현재 로케일의 숫자를 형식화하려면 팩토리 클래스 메서드 중 하나를 쓰면 돼요.

myString = NumberFormat.getInstance().format(myNumber);

여러 숫자를 형식화한다면 format을 얻고 여러 번 쓰는 것이 더 효율적이에요. 시스템이 로컬 언어·국가 관례 정보를 여러 번 가져오지 않아도 되기 때문이에요.

NumberFormat nf = NumberFormat.getInstance();
for (int i = 0; i < myNumber.length; ++i) {
    output.println(nf.format(myNumber[i]) + "; ");
}

다른 로케일의 숫자를 형식화하려면 getInstance 호출에 지정하면 돼요.

NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);

로케일이 "nu"(numbers) 및/또는 "rg"(region override) 유니코드 확장을 포함하면 소수 자릿수 및/또는 형식화에 쓰이는 국가가 덮어써져요. "nu"와 "rg"가 모두 지정되면 "nu" 확장의 소수 자릿수가 "rg" 확장의 암시적 값을 우선해요.

NumberFormat으로 숫자를 파싱할 수도 있어요.

myNumber = nf.parse(myString);
  • getInstance 또는 getNumberInstance — 일반 숫자 형식
  • getIntegerInstance — 정수 숫자 형식
  • getCurrencyInstance — 통화 숫자 형식
  • getPercentInstance — 백분율 형식
  • getCompactNumberInstance(Locale, Style) — 간결 숫자 형식

getAvailableLocales()로 지원되는 로케일을 얻고, getMaximumFractionDigits() 같은 getter/setter로 형식의 세부를 조정할 수 있어요. RoundingModesetRoundingMode(RoundingMode)로 설정해 반올림 동작을 제어할 수도 있어요.

더 알아보기 (Learn more)

Java 공식 API