I have had problems similar in the past.
Tas ... check that the values haven't actually been altered in the actual database. That can happen - if you set it wrong the first time it alters all your values in the database, turning 10.50 into 10.5, etc, so when you do get it right you still have the same problem.
Turning things to strings to display them sounds like a good idea, I take it we are talking asp.NET and not asp ..... then you can do what you want with them.
Try
<%# DataBinder.Eval(Container.DataItem, "price", "£{0:N2}")%>
in your aspx/ascx page for the formatting.