Hilaire
you have also acancagua that support unit and conversion and aconcagua
came out of a project dealing
with money and trades.
http://sdmeta.gforge.inria.fr/Teaching/CoursAnnecy/0506-M1-COO/
read the two articles in there.
Stef
Le 11/1/15 11:22, Hilaire a écrit :
Joachim,
Thanks for the tips.
I saw the Unit package was following the same pattern you are describing.
My first though was to use ScaledDecimal, but I discovered it is pretty
slow with computation (amortization schedule, search for rate) but there
are workarounds for that.
Hilaire
Le 11/01/2015 10:36, Joachim Tuchel a écrit :
There are more arguments against Subclassing any Number class:
Exchange rates are two-way most of the times. It is not only USD->EUR,
but also the other way round. This is not the responsibilty of a number.
For more information, I recommend Martin Fowler's Analysis Patterns book
(old, but not dated at all!).
Joachim
Am 11.01.15 um 10:31 schrieb Joachim Tuchel:
Ah, I just saw on second reading that you want to implement something
for currency exchange rates, not MonetaryAmounts. Still, don't use
Float, use ScaledDecimal or FixedPoint and make sure it NEVER contains
a Float. You'll get into all kinds of strange problems, starting with
Imports from datasources like Yahoo or whatever.
I'd subclass Object, and make the new class hold the exchange rates as
a ScaledDecimal with a well-defined scale (like 4 or 6 or even 8
digits if you want).
Joachim
Am 11.01.15 um 10:28 schrieb Joachim Tuchel:
Hilaire,
unless you have very (very very) specific needs, I would strongly
discourage you to use Float for anything related to Money or
Percentages.
We use a subclass of Object for MonetaryAmounts and implemented most
of the protocol of Magnitude. But, most importantly, the amount
instVar is made sure to always hold instances of ScaledDecimal (in VA
Smalltalk, that is).
Joachim
Am 11.01.15 um 10:25 schrieb Hilaire:
Le 11/01/2015 09:06, stepharo a écrit :
Hilaire
what is your requirement?
Stef
I want to create a currency object, basically a Float with an attribute
to specify the currency unit.
Hilaire