Previously, we printed all constants in scientific notation with
6 digits of precision. This is not enough to accurately display
the smallest value, but increasing the precision would be too much
for other values.
This patch prints values with fractional bits using only as many digits as
needed. 1*2^-15 and 1*2^-16 will be printed in scientific notation while
the others are printed without scientific notation. The integer values
are printed with a single 0 after the decimal point.
To check my understanding - it's okay to treat FLI.D (doubles) as floats here since the only values for doubles which aren't representable exactly as floats are the ones we explicitly emit symbolically just above? And the same basic argument for floats?