On Fri, Oct 15, 2021 at 10:18:36AM -0400, Dan Book wrote: > On Fri, Oct 15, 2021 at 4:03 AM Nicholas Clark <nick@ccl4.org> wrote: > > > I'm not sure that we can push this to distinguishing between "started as an > > integer literal" vs "started a floating point", *and* I'm not sure if we > > need to. The big problem we're trying to solve here is correctly generating > > formats such as JSON and YAML that *are* sensitive to strings vs numbers, > > and I didn't think that they (or their other-language consumers) were > > sensitive to "what sort of a number is it?" > > > > I can't speak to the others, but JSON does distinguish integers and floats; > some implementations have deigned to preserve roundtripping NVs with a > trailing '.0' though there are a couple problems with this. Perl NVs pop > into existence at some unexpected times, such as the result of 2**2. And > this isn't as important IME as creating, say, a JSON document with boolean > values. Oh my. How does (or "can?") Javascript itself manage to roundtrip JSON like this? How to implement C<**> in perl to return integers for integer input wasn't obvious, given that the C library builtins are pow (and also powl these days). Hence it kept its pre-5.8.0 behaviour of always returning an NV. It's consistent. If there's a good way to do it in (or close to) O(1) for integers, I'd love to know. Nicholas ClarkThread Previous | Thread Next