Be more exact when parsing doubles to floating point

The math was constructed in such a way that IEEE rules on floating point
were hurting us and not helping us. This meant we were seeing things
like the following when doing a round trip conversion:

Expected: 1.7775
Actual:   1.7774999999999999

Expected: 2.5024
Actual:   2.5023999999999997

Fix this by first computing the reciprocal of the denominator when
doing the integer parts to floating point conversion. This allows the
above two numbers (and many others) to be properly parsed and converted
into ruby floating point objects without needing to switch to using
BigDecimal objects.
Merge pull request #179 from DataEverywhere/float-precision

Be more exact when parsing doubles to floating point. Nice trick. Thanks for sharing,