round/float question

David C. Fox davidcfox at post.harvard.edu
Fri Oct 10 16:55:45 EDT 2003


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





More information about the Python-list mailing list