There is subtlety in selecting that "small number". 0.000000001 may look like a "small number", but if you're doing calculations in the 1e-20 range, suddenly it isn't small anymore. Small is relative to the task at hand. Simple uses of floats in known situations can get away with a hard-coded epsilon constant, and it may not even much matter what the number is, but as your usage becomes more sophisticated and more important, proper selection of epsilon values becomes non-trivial.