Use a Nationwide credit card and insist that the account is paid in US dollars and do not let them convert it. You should get almost $2 to the £1 that way.....Nei.
If you don't have/want a Nationwide credit card, you can always take out dollars from the Post office (they don't charge commission) before you leave and pay your bill in cash.
Any credit card (not just Nationwide's)can be used to settle the bill onboard with no extra charges because it is a merchant transaction and not a cash advance so you do not need to sign up to Nationwide's-any credit card will do, but make sure that you insist on Princess billing you in dollars as the conversion rate you get from the credit card company is far better than the Princess rate.Princess will not accept Maestro/Cirrus(ie debit cards) so you need Mastercard or Visa.When you are actually abroad,if you want to get cash from an ATM then the best card is Nationwide debit card or HSBC's debit card but only on a Plus or Premier account with them-hope this helps.
The post office do not charge commission - they make the money from a much worse rate of exchange. Do not be misled. Neils advice is excellent. I have taken out a nationwide account and credit card just to use abroad after reading http://www.moneysavingexpert.com/. I did it on the internet and it took 10 days till all done and pins came through. very worth while and much safer than using my usual cards/accounts. Otherwise, check exchange rates on the internet and buy travellers cheques or currency. M & S and Travelex are usually v good. If you use cash or t chqes you can pay into your onboard account on day 1 and top up as you go along or they will refund you any excess at the end of the cruise.
Normally you register a credit card when you go on board and then the bill is delivered to your cabin a couple of days before you are due to disembark for you to check. We have never had anything wrong with our bills - and then they just take it on your card. Easy.