I use double precision for everything (64 bit). A lot of it is more related to how much the slope changes, so there are triggers to add control points based on change in curvature angle as you travel down the curve. If the slope changes too much, then you add a break point, etc. You can get in trouble saving data to ascii file formats if you don't write using enough precision. I think I usually use something like 12 digits for that.
I'm sure there are more formal ways to explain it. I'm more of a hack trying to keep this stuff running, based on my predecessor's algorithms. I'm starting to switch some of the complicated CAD operations over to Open Cascade, but it is nice to have our own in-house kernel for simpler things.