Michael Lewis wrote:
I am trying to round a float to two decimals, but I am getting the
following error:

Traceback (most recent call last):
  File "<pyshell#23>", line 1, in <module>
    PaintingProject()
  File "C:/Python27/Homework/Labs/Lab 03_5.py", line 42, in PaintingProject
    print 'That will cost you $%f.' %(round(5.6523),2)
TypeError: not all arguments converted during string formatting


Basically, I am writing a program to ask a user how many square feet they
need to paint.

All this is irrelevant to your problem. Read the error message: it says that you have more arguments than expected when doing the string formatting. round() doesn't enter into it. You can get the same error if you do this:

print 'That will cost you $%f.' % (5.6523, 2)

You have one % target in the string, but two numbers trying to fit into it, and Python refuses to guess if you want to use 5.6523 or 2.

And that should give you the clue you need to solve the problem, which brings it back to round(). You want to round to two decimal places, but you don't put the 2 inside the call to round. You have:

(round(5.6523), 2)

which gives you two numbers: (6.0, 2)

but what you actually want is:

round(5.6523, 2)

which gives you the number you want, 5.65.

And finally, we come all the way back to the beginning again and say That's not the right way to do it! Don't round the number *outside* of the string formatting, get the string formatting to do it for you:

print 'That will cost you $%.2f.' % 5.6523

will give you the result you want.




--
Steven

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to