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.

The two test cases are pulled from issue #99 (which this solves) and a number we came across when using the library and noticing parse differences from standard ruby.