Ok it finally hit me :( The 24 fraction bits in a float aren't used like an integer (2^24 giving max 7 decimal digits precision) they are used by halving the value of the previous bit: 1, 0.5, 0.25 ... like fractions !!! this of course has a much wider decimal range (something like 20 or so) because not all numbers are represented.
Thus, the formatting %.100g and downs code both just give the correct answer . Now, there are 2^24 different floats being represented (ignoring exponent) so the question for me now is: What is the minimal (decimal) representation of a float for which the following holds: float f; //for all possible floats string s = format(f); float f2 = to!(float)(s); assert(f == f2); Does your second code hold, downs?
