another fp problem
Joerg Sonnenberger
joerg at britannica.bec.de
Mon Oct 6 13:40:24 EDT 2003
On Mon, 06 Oct 2003 23:27:02 +1000, Michael Hall wrote:
> Hi All:
>
> I'm a relative newbie to Python, apart from some CGI and shell scripting type
> stuff. Anyway, I'm having some problems doing maths in Python 2.2.2 on RH9.
>
> I'm wondering what is the best way or numerical data type to do simple monetary
> calculations in Python? I only need to work with decimal numbers to two decimal
> points. Are floating point numbers the only option? They're giving me hell!
There is no monetary type yet, i.e. fixed point full precision for adds.
>
> If floating point numbers are the only option, how can I round off a number to
> two decimal points? Converting to an integer is not working ... the cents disappear.
You are asking the wrong question. The problem is 35.33 is a finite binary
fraction like 35.25 is. There a few thing you can do in python. Use normal
integer arithmetic with a power of ten as exponent i.e. the normal
scintific notation with an integer mantisse (3533 * 10**-2). Build a class
around it to implement the involved operations and provide a __float__
function for the conversion by MySQLdb.
>
> Leaving valuse as floating point is also not working ... I end up with figures
> like $35.33000000018.
>
> BTW, I'm putting values in and out of a MySQL database (DECIMAL data type) using
> MySQLdb. The values giving me the most grief have been pulled out of the
> database, where they look just fine.
Perhaps you can get them as strings? Split the string in to get the number
of digits after the decimal point and set up a class like that mentioned
above.
Joerg
>
> Any advice graetly appreciated.
>
> Mick
>
> ------------------------------------------
> Ninti Systems: Linux Solutions and Support
> Michael Hall
> Mobile: 0429 095 392
> Ph/Fax: 08 8953 1442
> Email: office at ninti dot com
> Web: http://ninti.com
> ------------------------------------------
------------ And now a word from our sponsor ------------------
Want to have instant messaging, and chat rooms, and discussion
groups for your local users or business, you need dbabble!
-- See http://netwinsite.com/sponsor/sponsor_dbabble.htm ----
More information about the Python-list
mailing list