David Madore's WebLog: A mathematical amusement: bidecimal numbers

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]

↓Entry #0022 [older| permalink|newer] / ↓Entrée #0022 [précédente| permalien|suivante] ↓

(Sunday)

A mathematical amusement: bidecimal numbers

Here's a little mathematical fact that may amuse the reader. I thought about this some time ago, and was reminded of it while proving some statements about “weak approximation” today.

Start with a concrete case: on 2002-01-01, various European countries switched to a new currency, the euro. Exchange rates had been fixed several months earlier, by defining the euro's value as an exact number of the various earlier currencies (deutschemarks, liras, French francs and so on), these numbers being the then market exchange rate with six significant digits. For example, the euro was defined as (exactly) 6.55957 French francs. Naturally, this makes the French franc equal to approximately 0.152449 euro(s); however, in that direction, the ratio is not exact, because it is even more precisely 0.15244902 euro(s), and even that is not exact (though at that point, the further decimals become quite meaningless, but we are interested in mathematics, so we can't call it exact).

Call a number decimal iff it can be written with a finite (that is, ending) number of digits after the decimal point; in other words, it can be written as the quotient of an integer by some power of ten (as in: 6.55957 = 655957/100000). For example, 1/2 (one half) is a decimal number because it is 0.5 (or 5/10), and so is 1/5, but 1/3 and 1/7 are not decimal numbers (although they are, of course, rational numbers). So the value of the euro in all of the former European currencies was defined exactly as a decimal number (the euro's value in French francs, 6.55957, is decimal); on the other hand, the value of the currencies in euro(s) is not decimal (for example, 1/6.55957 is not decimal, because 0.152449 or 0.15244902 are only approximations, and no finite number of digits will give an exact value). This can be annoying (in practice it never is, or was, a problem, but assume for the sake of argument that it is).

Now call a number bidecimal iff it is decimal and its reciprocal (or “inverse”, that is, one divided by that number) also is a decimal number. There exist bidecimal numbers: for example, 4 is a bidecimal number, because 4 is decimal (as are all integers) and 1/4=0.25 is also decimal. Similarly, 1.25 is bidecimal (its reciprocal is 0.8). Now assume we had wanted the currency rates in both directions (the euro's value in the former currencies and the former currencies' value in euro(s)) to be decimal: in other words, for the currency rates to be bidecimal. Could we have done this? Of course, it is not the matter of picking an arbitrary bidecimal number: the fixed chosen currency rates need to be very close to the market rates at fixation time. The question, then, is: is it possible to find bidecimal numbers that are arbitrarily close to any given number? Or, in mathematical terminology: are the bidecimals dense in the real numbers? And the answer is yes. If it had been desirable to make the currency rates bidecimal, that could have been done while keeping adequation to an arbitrary precision with the market rates of the day. For instance, one can find a bidecimal number which is between 6.559565 and 6.559575, thus being close to 6.55957; or between 6.5595695 and 6.5596705; or to any desirable precision. I'm not claiming, though, that to fix the rate's approximation of market rates to six significant figures we need only six digits in the bidecimals! Actually, a bidecimal number between 6.559565 and 6.559575 needs quite an impressive number of digits to be written exactly (or its inverse); but it can be done.

As for why that wasn't done in practice, the last sentence above is the answer. But it is an amusing mathematical curiosity. I'll let the mathematically inclined reader figure out the proof.

Note that it doesn't work in binary, for instance: can you explain why that is?

↑Entry #0022 [older| permalink|newer] / ↑Entrée #0022 [précédente| permalien|suivante] ↑

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]