My husband would probably not agree with me on this one, but the amount of "walking around money" most people exchange isn't a big deal on the exchange rate side.
I recommend having local currency at all times. I also recommend carrying a calculator
The ship's purser or a special exchange desk will exchange U$ for you for a fee. Sometimes it's a set amount for the transaction, other times it's a percentage.
Your local bank will sell you what's called a "Tip Pak" of foreign currency in increments of $20. At least that's what our bank does. Depending upon your relationship with your bank the service may be without cost and is at the current exchange rate. Or it might cost a little bit more.
The best exchange rates are (almost always) at American Express offices. But it can be a real pain. Local banks are also good, but the lines are even longer than at AmEx and banks in foreign countries keep some very strange hours and have some strange rules.
I was recently unable to exchange cash (real, green, U$) at a bank in Portugal without a passport or photo ID. The cruise line had my passport and I didn't think to bring my driver's license along. No plans to rent a car

I handed the money to a friend who was with us and HAD a photo ID (MasterCard with photo). They refused.
When you think of what you pay for a cruise, a few bucks for exchanging money is just Not A Big Deal.
However, if you are thinking of exchanging several million dollars, I will be happy to accompany you on your next cruise.
pamda -- CruiseMates First Time Cruisers Hostess and Utility Infielder