We've never exchanged money on the ship, nor do we usually exchange money in town. since we're inveterate travelers, we watch the currency exchange values and purchase through our bank when the rates dip to really low rates. Obviously, this means saving the currency for future use, which we do, as we generally take 2-4 trips a year, so we don't have to save it that long. Having local money in our pockets when we land is a definite plus. Right now the Euro is low, and we plan on purchasing some more. if it drops lower, which is predicted, we may purchase ven more, as we will definately use them later this year, and since our supply is low, after we used them on a recent Grand Circle Spain trip.
If you can plan sufficiently in advance, we recommend that you do so. Most banks can get you the currency within 2-3 days, so if you're not leaving relatively soon, you still have time to purchase now( assuming your bank has currency exchange-most commercial banks do ), and still have your money in time for your trip, avoiding the necessity for purchasing en route. You'll also get a favorable rate of exchange, as the Euro appears to be declining. Of course, our plan has the drawback that you will not be taking only the amount of foreign currency you will spend, hence leaving you with potentially a considerable amount when you return. But that won't be a problem if you're planning future trips.
A better way to avoid the hassle is to use credit cards. Capital One will not charge you a transaction fee for each transaction, as many other cards do, making your purchases essentially, a direct conversion, at the rate, at the time of purchase. However, the credit card won't be good for purchasing, say, ice cream or a drink at a stand; you'll need some cash for that. If you only needa few EUros in your pocket for that, and are not converting large amounts, then the rate of excahange becomes a negligible factor, in favor of convenience.