Class Currency
- java.lang.Object
-
- javax.measure.unit.Unit<Q>
-
- javax.measure.unit.DerivedUnit<Money>
-
- org.jscience.economics.money.Currency
-
- All Implemented Interfaces:
Serializable
public class Currency extends DerivedUnit<Money>
This class represents a currency
Unit. Currencies are a special form ofDerivedUnit, conversions between currencies is possible if their respective exchange rates have been set and the conversion factor can be changed dynamically.Quantities stated in
Currencyare usually instances ofMoney.By default, the label associated to a currency is its ISO-4217 code (see the ISO 4217 maintenance agency for a table of currency codes). An application may change this default using the
UnitFormat.label(String)method. For example:[code] UnitFormat.getStandardInstance().label(Currency.EUR, "€"); UnitFormat.getStandardInstance().label(Currency.GBP, "£"); UnitFormat.getStandardInstance().label(Currency.JPY, "¥"); UnitFormat.getStandardInstance().label(Currency.USD, "$"); [/code]- See Also:
setExchangeRate(double), Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static CurrencyAUDThe Australian Dollar currency unit.static CurrencyCADThe Canadian Dollar currency unit.static CurrencyCNYThe China Yan currency.static CurrencyEURThe Euro currency.static CurrencyGBPThe British Pound currency.static CurrencyJPYThe Japanese Yen currency.static CurrencyKRWThe Korean Republic Won currency.static CurrencyTWDThe Taiwanese dollar currency.static CurrencyUSDThe United State dollar currency.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(Object obj)Indicates if the specified unit can be considered equals to the one specified.StringgetCode()Returns the currency code for this currency.intgetDefaultFractionDigits()Returns the default number of fraction digits used with this currency unit.doublegetExchangeRate()Returns the exchange rate for thisCurrency.static CurrencygetReferenceCurrency()Returns the currency used as reference when setting the exchange rate.Unit<? super Money>getStandardUnit()Returns thebase unit,alternate unitor product of base units and alternate units this unit is derived from.inthashCode()Returns the hash code for this unit.voidsetExchangeRate(double refAmount)Sets the exchange rate of thisCurrencyrelatively to the reference currency.static voidsetReferenceCurrency(Currency currency)Sets the reference currency (context-local).UnitConvertertoStandardUnit()Returns the converter from this unit to its system unit.
-
-
-
Field Detail
-
AUD
public static final Currency AUD
The Australian Dollar currency unit.
-
CAD
public static final Currency CAD
The Canadian Dollar currency unit.
-
CNY
public static final Currency CNY
The China Yan currency.
-
EUR
public static final Currency EUR
The Euro currency.
-
GBP
public static final Currency GBP
The British Pound currency.
-
JPY
public static final Currency JPY
The Japanese Yen currency.
-
KRW
public static final Currency KRW
The Korean Republic Won currency.
-
TWD
public static final Currency TWD
The Taiwanese dollar currency.
-
USD
public static final Currency USD
The United State dollar currency.
-
-
Constructor Detail
-
Currency
public Currency(String code)
Creates the currency unit for the given currency code. See the ISO 4217 maintenance agency for more information, including a table of currency codes.- Parameters:
code- the ISO-4217 code of the currency (e.g."EUR", "USD", "JPY").- Throws:
IllegalArgumentException- if the specified code is not an ISO-4217 code.
-
-
Method Detail
-
getCode
public String getCode()
Returns the currency code for this currency.- Returns:
- the ISO-4217 code of the currency
(e.g.
"EUR", "USD", "JPY").
-
getDefaultFractionDigits
public int getDefaultFractionDigits()
Returns the default number of fraction digits used with this currency unit. For example, the default number of fraction digits for theEURis 2, while for theJPY(Yen) it's 0. This method can be overriden for custom currencies returning values different from2.- Returns:
- the default number of fraction digits for this currency.
-
setReferenceCurrency
public static void setReferenceCurrency(Currency currency)
Sets the reference currency (context-local). Changing the reference currency clears all the exchange rates previously set.- Parameters:
currency- the new reference currency.- See Also:
LocalContext
-
getReferenceCurrency
public static Currency getReferenceCurrency()
Returns the currency used as reference when setting the exchange rate. By default, the reference currency is the currency for the default country locale.- Returns:
- the reference currency.
- See Also:
setExchangeRate(double)
-
setExchangeRate
public void setExchangeRate(double refAmount)
Sets the exchange rate of thisCurrencyrelatively to the reference currency. Setting the exchange rate allows for conversion betweenMoneystated in different currencies. For example:Currency.setReferenceCurrency(Currency.USD); Currency.EUR.setExchangeRate(1.17); // 1.0 € = 1.17 $- Parameters:
refAmount- the amount stated in thegetReferenceCurrency()equals to one unit of thisCurrency.- See Also:
getReferenceCurrency()
-
getExchangeRate
public double getExchangeRate()
Returns the exchange rate for thisCurrency.- Returns:
- the amount stated in the
getReferenceCurrency()equals to one unit of thisCurrency. - Throws:
ConversionException- if the exchange rate has not be set for thisCurrency.
-
equals
public boolean equals(Object obj)
Description copied from class:UnitIndicates if the specified unit can be considered equals to the one specified.
-
hashCode
public int hashCode()
Description copied from class:UnitReturns the hash code for this unit.
-
getStandardUnit
public Unit<? super Money> getStandardUnit()
Description copied from class:UnitReturns thebase unit,alternate unitor product of base units and alternate units this unit is derived from. The standard unit identifies the "type" ofquantityfor which this unit is employed. For example:[code] boolean isAngularVelocity(Unit> u) { return u.getStandardUnit().equals(RADIAN.divide(SECOND)); } assert(REVOLUTION.divide(MINUTE).isAngularVelocity()); [/code]Note: Having the same system unit is not sufficient to ensure that a converter exists between the two units (e.g. °C/m and K/m).
- Specified by:
getStandardUnitin classUnit<Money>- Returns:
- the system unit this unit is derived from.
-
toStandardUnit
public UnitConverter toStandardUnit()
Description copied from class:UnitReturns the converter from this unit to its system unit.- Specified by:
toStandardUnitin classUnit<Money>- Returns:
this.getConverterTo(this.getSystemUnit())
-
-