round/float question

Andy Todd andy47 at halfcooked.com
Mon Oct 13 04:56:53 EDT 2003


David C. Fox wrote:
> Please use a word wrap of 75 characters or less.
> 
> Jason Tesser wrote:
> 
>> I am using Rekall which uses Python as it's scripting language  and I
>> have a question about Python.  I am developing a POS system and am
>> working on the checkout form. I pass a parameter named SaleID and
>> another one named Total.  I am trying to take total and convert it to
>> a float with 2 decimals top be used as money obviously.  What would
>> be the proper syntax for this?  I tried Total = round(Total [, 2]) i
>> also tried that with float.
>>
>> Jason Tesser Web/Multimedia Programmer Northland Ministries Inc. 
>> (715)324-6900 x3050
>>
>>
> 
> For monetary values, you are much better off avoiding floating point 
> altogether.  For example, you could express total in cents.  Then, to
> convert to dollars and cents, you can use divmod(total, 100), which 
> divides total by 100, returning the integer portion (the dollar amount) 
> followed by the remainder (cents amount).
> 
> For example:
> 
> total = 599 # ($5.99)
> print "item $%d.%d" % divmod(total, 100)
> 
> total = total + 275
> dollars, cents = divmod(total, 100)
> print "subtotal $%d.%d" % divmod(total, 100)
> 
> taxrate = .05
> tax = int(round(total*taxrate))
> print "tax $%d.%d" % divmod(tax, 100)
> 
> total = total + tax
> print "total $%d.%d" % divmod(total, 100)
> 
> David
> 

Or you could use the fixed point module to represent all of your 
monetary items (http://fixedpoint.sourceforge.net/).

Regards,
Andy
-- 
--------------------------------------------------------------------------------
 From the desk of Andrew J Todd esq - http://www.halfcooked.com/







More information about the Python-list mailing list