I’m not Gordon, but I do have an opinion! For me, the program text might have some reason to have trailing zeros: 2.50 for example. So, although the value can round-trip, it still needs to have the text version saved.
I rather like the approach mentioned elsewhere:
(This approach doesn’t rule out tokenising keywords as a matter of course, but it can do more than that, for example converting expressions to a ready-to-evaluate form, perhaps RPN.)