Money data type

Asun Friere afriere at yahoo.co.uk
Thu Sep 18 03:38:55 CEST 2003


"Batista, Facundo" <FBatista at uniFON.com.ar> wrote in message news:<mailman.1063823424.16083.python-list at python.org>...
> Can't find it.
> 
> I mean something like:
> 
> >> m1 = Money(decimal=2)
> >> m2 = Money(decimal=2)
> >> m1.value = 3.20
> >> m2.value = 2.15
> >> print m1 + m2
> 5.35
> 
> 5.35! Not 5.3500000000000001 neither 5.34999999999999999999.
> 
> I think this is not a rare thing, but I can't find it in the standar library
> neither the package index.
> 
> Thanks!
> 
> .	Facundo

If it's merely a matter of representing itself you could do something
blindingly simple like:

class Dollars (float) :

    def __repr__ (self) :
        return "$%.2f" % self

    def __add__ (self, other) :
        return Dollars(float.__add__(self, other))

    #and so on for the other mathematical operators ...

>>> a = Dollars(125.45)
>>> a
$125.45
>>> a + 25.6667
$151.12
>>> 


Note this is _not_ to your spec (ie output includes a currency symbol
and input is simply a float).




More information about the Python-list mailing list