On Aug 9, 2019, at 17:44, Greg Ewing email@example.com wrote:
Since Python's Decimal preserves all the information in the JSON representation of a float (including trailing zeroes!), anything else you might want can be achieved by pre/postprocessing the decoded data structure.
It's just occurred to me that this isn't quite true, since Decimal doesn't preserve *leading* zeroes.
That one isn’t a problem, because JSON doesn’t allow leading zeroes. If you want to use 00.012 vs. 0.012 to say something meaningful about your precision, you’d have to encode that meaning in JSON as something like 0.0012E1 vs. 0.012E0.
Of course Decimal will throw away _that_ distinction, but only for the same reason it throws away all of the distinctions between 0.012E0 vs. 0.012 vs 1.2E-2 vs. 1.2e-2 and so on, so you’re only hitting the everyday problem that Decimal can’t solve for anyone; there’s no additional problem that Decimal can’t solve here that’s only faced by your weird app.
But an application that cared about that would be pretty weird. So I think a "use decimal" option would cover the vast majority of use cases.