problem with money datatype based calculations in python

John Machin sjmachin at lexicon.net
Sat May 2 18:45:31 EDT 2009


On May 3, 12:09 am, Dave Angel <da... at ieee.org> wrote:
> Krishnakant wrote:
> > hello all,
> > I am using postgresql as a database server for my db application.
>
> > The database is related to accounts and point of sales and many
> > calculations involve money datatype.
>
> > The application logic is totally done in python.  Now the problem is
> > that there is a situation where we calculate tax on % of the total
> > amount on the invoice.  The  percentage is in terms of float but the
> > eventual amount has to be in a money datatype.
>
> > The product cost comes in money datatype from postgresql and the tax %
> > comes in float.  So I would like to know if python supports some thing
> > similar to money datatype so that I can cast my total amount (in money )
> > divided by tax% (in float ) so money divided by float should be the
> > result and that result should be in money datatype.
> > For example a product x has the cost Rs. 100 which is stored in the
> > tabel as money type.  and in the tax table for that product the VAT is
> > 5% and this 5% is stored in float datatype.  So after using both these
> > values the resulting total 105Rs. should be in money type and not float.
> > I awaite some reply,
> > Thanks in advice.
> > happy hacking.
> > Krishnakant.
>
> Tax rate isn't divided, it's multiplied.  But probably that's just a
> typo in your message.
>
> Short answer is use your money class to convert the float into money.  
> And then test, to see that's really what you wanted.  Be sure and check
> the edge cases, because float is a binary system, and you can get both
> quantization and rounding problems converting between them.
>
> Is the money you're dealing with decimal-based?  So maybe money values
> are integers plus two more digits of fractional precision?
>
> It's going to be tough for somebody with no access to that "money type"
> to guess what your problem is.  What operations does it currently
> support?  If it supports multiply, then just change the tax rate to be a
> money type.

Aarrgghh!! If the "money type" supports multiplying money by money,
the author should be put in the stocks and pelted with rotten
vegetables.

(IMHO)




More information about the Python-list mailing list