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 _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor