I learned the easy way to tip from an American: In the US, it is "Double the tax". Usually, the tax is 7-8%, so doubling the tax will leave you at 14-16%, which is appropriate for good service.
Also, I learned that you never should not give any tip. If you are extremely dissatisfied, give a single penny. I did it once, and there were no complaints, because they knew the intention.
Once, I had dinner with a friend of mine. The service was lousy, so my friend gave a low tip. The waiter had heared us speaking in German, so he said "In this country, it is customary to give a 15% tip". My friend apologized politely, took back the money, and handed the waiter the amount without any tip at all. The waiter's face was priceless!