> On 29 Mar 2015, at 22:33, Jakub Zelenka <bu...@php.net> wrote:
> 
> I would like to add a new option to JSON for dealing with large floats. The
> use case is mainly for decoder but can be used for encoder as well.
> 
> JSON_FLOAT_AS_STRING
> decode: all float values will be decoded as string
> - It's often an issue for very large float values with many fractional
> digits that are coming from platforms that support larger float
> representation than double. In that case the conversion is lost and there
> is no way how to get it back (see http://bugs.php.net/68456 [pls ignore my
> initial dump comments when I didn't get the issue :)] and an example of the
> lost precision here http://3v4l.org/80iCh ). Converting the value to string
> keep the precision and resolves the problem.
> 
> encode: all float values will be encoded as string
> - re-using the constant for encoder makes sense if PHP creates JSON for
> platform that support lower float type (e.g. C float) and the precision
> loss is not acceptable
> 
> 
> I think that this is more a bugfix as the precision is lost without any way
> how to get it back (except pre-processing json string with regular
> expression). I would like to add it to 5.6.x if there are no objections?

Feels a bit hackish
I think it is possible to introduce an overall better solution

We can expose result of json-tokenizing as a tree of objects:

JSON\Object
JSON\Array
JSON\String
JSON\Number
JSON\False
JSON\True
JSON\Null

then, it would be possible to introduce any number of experimental userland 
implementations like the one proposed here

-- 
Alexey Zakhlestin
https://github.com/indeyets
PGP key: http://indeyets.ru/alexey.zakhlestin.pgp.asc





--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to