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
Currency
are 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 Currency
AUD
The Australian Dollar currency unit.static Currency
CAD
The Canadian Dollar currency unit.static Currency
CNY
The China Yan currency.static Currency
EUR
The Euro currency.static Currency
GBP
The British Pound currency.static Currency
JPY
The Japanese Yen currency.static Currency
KRW
The Korean Republic Won currency.static Currency
TWD
The Taiwanese dollar currency.static Currency
USD
The United State dollar currency.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object obj)
Indicates if the specified unit can be considered equals to the one specified.String
getCode()
Returns the currency code for this currency.int
getDefaultFractionDigits()
Returns the default number of fraction digits used with this currency unit.double
getExchangeRate()
Returns the exchange rate for thisCurrency
.static Currency
getReferenceCurrency()
Returns the currency used as reference when setting the exchange rate.Unit<? super Money>
getStandardUnit()
Returns thebase unit
,alternate unit
or product of base units and alternate units this unit is derived from.int
hashCode()
Returns the hash code for this unit.void
setExchangeRate(double refAmount)
Sets the exchange rate of thisCurrency
relatively to the reference currency.static void
setReferenceCurrency(Currency currency)
Sets the reference currency (context-local).UnitConverter
toStandardUnit()
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 theEUR
is 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 thisCurrency
relatively to the reference currency. Setting the exchange rate allows for conversion betweenMoney
stated 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:Unit
Indicates if the specified unit can be considered equals to the one specified.
-
hashCode
public int hashCode()
Description copied from class:Unit
Returns the hash code for this unit.
-
getStandardUnit
public Unit<? super Money> getStandardUnit()
Description copied from class:Unit
Returns thebase unit
,alternate unit
or product of base units and alternate units this unit is derived from. The standard unit identifies the "type" ofquantity
for 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:
getStandardUnit
in classUnit<Money>
- Returns:
- the system unit this unit is derived from.
-
toStandardUnit
public UnitConverter toStandardUnit()
Description copied from class:Unit
Returns the converter from this unit to its system unit.- Specified by:
toStandardUnit
in classUnit<Money>
- Returns:
this.getConverterTo(this.getSystemUnit())
-
-