I was in Prague in early december and noticed rip off rates at most of the cash machines .. However found that the Komercni Banka (KB) and the Raiffeisenbank cash machines were fine . The KB machines were the best but the Raiffeisenbank one did give an option for dynamic conversion which I declined and requested to be charged in CZK itself . .
Avoid the ones at the airport or the generic ones on the street ..Also use cards as much as you can and if you are given a choice of paying in Czech crowns / EUR/ USD etc then always choose to pay in the local currency (czech Crowns) .
Note this whenever going to any country. Decline the offer of paying in your home currency ( i.e USD if you are from the USA paying with a USA issued card ). Pay in the local currency and let your card issuer deal with the forex
This is still likely to be cheaper than the rip off DCC that you may he charged when away from home for the "convenience" of paying in home currency.. I've been hit with over 15% in DCC fees before I learnt all these.
im no sure about the USD but most shops will take the EUR . But exchange rates will not be great .Will lose at least 10% or so .
Right now official rate is 23 5 czk per EUR ...I reckon that shops will give 20 czk max.