Parsing floating point strings, always producing the IEEE float or double closest to the number given, is surprisingly hard.
The hard cases are big exponents and large numbers of decimal digits. In general, it requires arbitrarily large integers (OK, OK, up to the maximum size of a double ~2^1023) and long division on said large integers. Denormalized is a pain for sure.
Did this recently. https://github.com/titzer/virgil/blob/master/aeneas/src/vst/...
Parsing floating point strings, always producing the IEEE float or double closest to the number given, is surprisingly hard.