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