The Systems Developer's Guide to the Euro
Created | Updated Jan 27, 2012
On 1 January, 1999, 11 currencies1 fixed their exchange rates against a new currency unit - the Euro.
The fixed rates are:
1 | Euro is |
40.3399 | Belgian Franc |
1.95583 | German Mark |
166.386 | Spanish Peseta |
6.55957 | French Franc |
0.787564 | Irish Pounds |
1936.27 | Italian Lira |
40.3399 | Luxembourg Franc |
2.20371 | Dutch Guilder |
13.7603 | Austrian Schilling |
200.482 | Portuguese Escudo |
5.94573 | Finnish Markka |
340.750 | Greek Drachma |
This was phase one of the European Monetary Union (EMU) and the birth of the currency called the Euro.
On 1 January, 2002, the currencies listed above will cease to exist. This means that all transactions, prices and values expressed in these currencies must be converted such that they are expressed in Euros.
Conversion Rules
Single rate - The rule is that the above rate must be used regardless of whether you are converting to or from Euros - the inverse rate may not be used. Thus, to convert from Irish pounds to Euro, divide by 0.787564. To convert from Euro to Irish pounds, multiply by .787564.
Precision - Six digit precision must be used in all Euro conversions.
Rounding - After conversion to Euros, the result must be rounded to the nearest cent. A cent is one hundredth of a Euro - thus the post conversion precision is two digits.
Triangulation - All currency conversions to or from a member currency must be converted through the Euro - this process is known as triangulation. Thus, to convert from Deutschmarks to US dollars, an amount must first be converted to Euros (according to rules 2.1 to 2.3) and then this resulting amount converted to US dollars.
Practical considerations for developers
These rules lead to the following practical considerations:
Storing the conversion rates - The rates above are fixed and immutable. This means that you can hard code them in a program if this suits your development environment (although it is probably better to store them in a database table to allow them to be accessed elsewhere). However you store the rate, the data type of the variable must allow six-digit precision.
Performing the conversion - As above, any interim store, variable or function used to perform a Euro conversion must be capable of at least six digits of precision. In Visual Basic (and by extension, Visual Basic for Applications) this means that you must not store any calculations as a Currency, Integer or Long Integer variable types and that conversions to/from these data types must not be part of the conversion routine. In SQL, the data types MONEY and SMALLMONEY must be avoided.
Post conversion rounding - Rounding is to two digits, where anything with a third significant digit of less than 5 is rounded down and 5 or more is rounded up. For the most part any system defined conversion 2 will already do this - but you should check any rounding functions (implicit or explicit) in your programs.
Triangulation - The currencies within the Euro zone (noted above) should be known to your systems and any conversion to or from them should be done in two steps. First convert to Euros, then convert to your target currency.
Timetable - Like Y2K, this is another IT problem with a hard deadline. If your systems are not Euro-enabled by 1 January, 2002, you will not be able use them to trade in the Euro zone. If you aren't working on this right now, get started.