[Tutor] oops - resending as plain text

Don Jennings dfjennings at gmail.com
Tue Apr 16 20:29:48 CEST 2013


On Apr 16, 2013, at 1:48 PM, Jim Mooney wrote:

> I accidentally sent as HTML so this is a resend in case that choked
> the mailing prog ;')
> 
> I was doing a simple training prog to figure monetary change, and
> wanted to avoid computer inaccuracy by using only two-decimal input
> and not using division or mod where it would cause error. Yet, on a
> simple subtraction I got a decimal error instead of a two decimal
> result, as per below. What gives?
> 
> cost = float(input('How much did the item cost?: '))
> paid = float(input('How much did the customer give you?: '))
> change = paid - cost
> 
> #using 22.89 as cost and 248.76 as paid
> 
> twenties = int(change / 20)
> if twenties != 0:
>  twentiesAmount = 20 * twenties
>  change = change - twentiesAmount
>  #change is 5.8700000000000045, not 5.87 - how did I get this decimal
> error when simply subtracting an integer from what  should be a

Now that Joel Goldstick has pointed out the reason, you may wonder what to do now. Answer? Use the decimal module:

http://docs.python.org/2/library/decimal.html

Although, you might prefer Doug Hellmann's introduction:

http://pymotw.com/2/decimal/

Take care,
Don



More information about the Tutor mailing list