"The job of a parser is to perform the opposite of stringification as precisely as possible."
Is it though? String-to-float parsers are quite flexible in the range of inputs they allow. "1000", "1E3", "10E2", "0.1E4", "1000.0", "00000001000.00000000000000" all return the same float value. https://dotnetfiddle.net/K08vk5
(See also sibling comment by "someone".)
If your question is "Is this string the canonical representation of some number?" then a parser function on its own is the wrong tool.