Often the actual question I want answered is "What tip will I be giving if I pay various whole dollar amounts?"
For example, let's say I order a pizza for delivery, and the mandatory charges come to $20.60, and let's also say I consider 15% a reasonable tip.
A normal tip calculator will tell me that I should give the pizza guy $23.69.
Screw that, I'm not futzing around with trying to find $0.69 in coins, and I'm certainly not going to give him $24 or $25 and ask for $0.31 or $1.31 in change.
Nope. I'm going to pay an integral number of dollars and say "keep the change".
What I want a tip calculator to do is give me a table:
Pay Effective Tip
$21 1.9%
$22 6.8%
$23 11.7%
$24 16.5%
$25 21.4%
I can then look at that, and see that my best choices are $23, $24, or $25. $23 comes out far enough below 15% that I'll cross that off. $24 is a little over 15%, so is perfect, but if I don't have 4 $1 bills in my wallet, $25 would not be extravagant. Result: $24 or $25, depending on exactly what bills are in my wallet.I made an Apple Dashboard widget to do just that, and it worked out quite well. If I had ever gotten around to learning mobile development, that was going to be my first app for learning.
Many cafes sell also beans and other merchandise that are manufactured or made in batches, and can be $20 per item. So tipping on those items would be similar than you tipping in grocery stores or other stores that sell goods. Like you buy a $20k car, do you tip them 20%?
Personally, I always just change the default calculation and tip on the service items like $1 for coffee/drink.
That said, it's sort of an arbitrary custom. It's not very much work to fill a glass of beer, find a t-shirt in some cabinet, or hand someone a cup of coffee.