round/float question

J

Jason Tesser

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
 
D

David C. Fox

Please use a word wrap of 75 characters or less.

Jason said:
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
 
A

Andy Todd

David said:
Please use a word wrap of 75 characters or less.

Jason said:
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
 
S

Sagiv Malihi

what you did was fine -
round (var, ndigits) will return the variable rounded to as many digits
after the decimal point as you want.
(perhaps your problem was with the square brackets? they are obviously not
needed )
sagiv.


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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,171
Messages
2,570,935
Members
47,472
Latest member
KarissaBor

Latest Threads

Top