Re: JSON float number as string

From: Date: Fri, 10 Apr 2015 00:29:38 +0000
Subject: Re: JSON float number as string
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-85763@lists.php.net to get a copy of this message
Hi Jakub, On Mon, Mar 30, 2015 at 4:33 AM, Jakub Zelenka <bukka@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? > Could you add "json_encode" type hint also? Large int/float must be treated as string or GMP object (we don't have GMP float yet, though) Currently, there is no way to encode large "numeric" JSON data correctly when it is stored as string. string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 [, array $type_spec = NULL]]] ) where $type_spec specifies correct data representation. i.e. numeric, string, bool json_encode() type hint should work like Zeev's type hint. i.e. No data type conversion, but validate its content. Regards, -- Yasuo Ohgaki yohgaki@ohgaki.net

« previous php.internals (#85763) next »