Gay's algorithm to print a number is available as C code here: http://netlib2.cs.utk.edu/fp/dtoa.c code is over 70 pages long!! Here are some thoughts about how to be a little more sane: 1. Start with a IEEE standard 64-bit real X. Assume X>0 wlog. 2. From the base-2 exponent field, we can deduce (up to +-1 error) the decimal exponent field via 1 table lookup (precomputed table). 3. The exact thresholds (in the form of 64-bit IEEE reals) for where the base-10 exponents increment, can be precomputed and stored in another table. Checking if > or X<=threshold, we then deduce the exact decimal exponent field in just 1 more instruction. 4. That tells us a power of 10 to multiply X by, to convert it to a real Y, 1<=Y<10. (This power again can be in precomputed table.) If our goal is to print that real with N decimal places, we want to multiply by a further 10^N too, converting Y to an (N+1)-digit integer (plus fractional part, which we eliminate via rounding). 5. Do that multiplication (call this the "critical multiplication") and rounding to get Y. 6. Now print Y as an integer in decimal -- I assume we already know how to print integers! 7. Done. The "critical multiplication" to produce Y could be done in exact arithmetic, or just extended enough beyond the usual 53-bit IEEE mantissa's precision. Intel processors have internal 80-bit reals, right? Would that not be enough? And we can also work in 128-bit integer arithmetic from then on if necessary. So I don't see why this has to be so freaking hard.