NumberFormat
NumberFormat (숫자 형식화 추상 기본 클래스)
모든 숫자 형식의 추상 기본 클래스예요. 이 클래스는 숫자를 형식화하고 파싱하는 인터페이스를 제공해요. 또한 어떤 로케일이 숫자 형식을 갖고 있는지, 그 이름이 무엇인지 결정하는 메서드도 제공해요.
본문
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로 형식의 세부를 조정할 수 있어요. RoundingMode를 setRoundingMode(RoundingMode)로 설정해 반올림 동작을 제어할 수도 있어요.