Maybe this is misguided cheat, but couldn't you map any real number (between 0 and 1) to a natural number by mirroring the decimal digits across the decimal point. So 0.123 -> 321, but also sqrt(2)/2 -> ?601707 where ? is the rest of the decimal representation. This creates infinitely large numbers, but it's still a 1-to-1 mapping.