Currency
Currency (통화 클래스)
통화(currency)를 나타내는 final 클래스예요. 화폐는 ISO 4217 화폐 코드로 식별해요. 어떤 주어진 통화에 대해서도 Currency 인스턴스가 둘 이상 생기지 않도록 설계돼서 public 생성자가 없어요. 인스턴스는 getInstance 메서드로 얻어요.
본문
사용자는 시스템 프로퍼티 java.util.currency.data로 Java 런타임의 화폐 데이터를 대체할 수 있어요. 이 프로퍼티가 정의되면 그 값은 프로퍼티 파일의 위치이며, 내용은 ISO 3166 국가 코드와 ISO 4217 화폐 데이터의 키/값 쌍이에요.
값 부분은 세 개의 ISO 4217 값, 즉 알파벳 코드, 숫자 코드, 소수 단위로 이뤄지고 쉼표로 구분돼요. #으로 시작하는 줄은 주석으로 처리돼요.
새 데이터가 언제부터 효력을 발휘하는지 나타내는 절환(cutover) 날짜가 필요하면 통화 항목마다 선택적으로 UTC 타임스탬프를 지정할 수 있어요. 타임스탬프는 통화 프로퍼티의 끝에 붙고 구분자로 쉼표를 써요. 형식은 ISO 8601의 'yyyy-MM-dd'T'HH:mm:ss'이에요.
# 일본 화폐 데이터 대체 예
JP=JPZ,999,0
# 절환 날짜가 있는 예
JP=JPZ,999,0,2014-01-01T00:00:00
구문이 잘못된 항목은 무시되고 나머지 항목은 계속 처리돼요. 중복된 국가 코드 항목이 있으면 해당 통화의 동작은 정의되지 않고 나머지 항목이 처리돼요.
통화나 금액을 다룰 때는 부동소수점 숫자와 그 연산을 더 잘 처리하는 BigDecimal 클래스를 사용하는 걸 권장해요.
Currency krw = Currency.getInstance("KRW");
String code = krw.getCurrencyCode(); // "KRW"
int digits = krw.getDefaultFractionDigits(); // 0
코드와 시그니처는 원문 그대로 보존돼요.