Opaque pricing and the inability to compare clearly is what keeps customers with companies - it's been used for years by phone/cable for example.
Cloud companies can either offer very fine grained pricing - where you pay small amounts for everything (bandwidth in and out, storage, cpu, memory usage, etc) which will be tied to how they have implemented their product (often charged on a cost+%profit basis). Or bundle stuff up in tiers (developer, business, enterprise levels etc) which are simpler to understand but can work out expensive if you use up your limit.
AWS atleast provides tools for working out costs - it should also be possible to model your app costs in a spreadsheet for each service provider.