The main reason I always turn to finite differences is because the formula are so easy that I can get it right the first time without looking anything up. But the cancelation problems are very real, so I might have to look into this, because the formula isn't more complex.