Money data type

Discussion in 'Python' started by Batista, Facundo, Sep 17, 2003.

1. Batista, FacundoGuest

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

Batista, Facundo, Sep 17, 2003

2. Lukasz PankowskiGuest

Lukasz Pankowski, Sep 17, 2003

3. Asun FriereGuest

"Batista, Facundo" <> wrote in message news:<>...
> 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

#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).

Asun Friere, Sep 18, 2003
4. Asun FriereGuest

(Asun Friere) wrote in message news:<>...
>
> def __repr__ (self) :
> return "\$%.2f" % self

Umm ...you might want to do the same to __str__ if you want to print ... :/

Asun Friere, Sep 18, 2003