On Mon, May 30, 2016 at 8:01 PM, Jakub Zelenka <bu...@php.net> wrote:
> On Mon, May 30, 2016 at 7:28 PM, Nikita Popov <nikita....@gmail.com> > wrote: > >> On Mon, May 30, 2016 at 6:34 PM, Jakub Zelenka <bu...@php.net> wrote: >> >>> On Fri, Sep 4, 2015 at 1:41 AM, Yasuo Ohgaki <yohg...@ohgaki.net> wrote: >>> >>> > Hi all, >>> > >>> > IEEE 754 double cannot express exact float values. That said, >>> > float values expressed by json/serialize/var_export/echo/print >>> > are not precise enough in many cases. >>> > >>> > Issues: >>> > - json_encode() uses EG(precision)=14 that truncates float values. >>> > echo()/print() >>> > does this as well. >>> > - large EG(precision)/PG(serialize_precision) prints meaningless >>> values. >>> > >>> > This RFC proposes zend_dtoa()'s 0 mode support which rounds float value >>> > to nearest value. >>> > >>> > https://wiki.php.net/rfc/precise_float_value >>> > https://github.com/php/php-src/pull/1455 >>> > >>> > This change is simple enough for PHP 7.0. IMO. >>> > Comments/suggestions are appreciated! >>> > >>> > >>> Hi, >>> >>> After asking Yasuo, I'm putting forward this RFC to have more precise >>> float >>> to string decoding at least in PHP 7.1. I cleaned the RFC up a little bit >>> and it's targeting just 7.1. >>> >>> It has been some time since this was announced so I will keep it open >>> for a >>> week or two and then plan to start vote. >>> >> >> Thanks for taking over this proposal! >> >> I've already mentioned this on the PR when this was originally proposed, >> but bringing it up here as well: >> >> This proposal adds a new json.precision setting. Why? I've been told that >> this is more flexible, which is fair enough, but imho we should have very >> strong reasons for introducing new ini settings. Reasons that go beyond "it >> might be useful to someone ... maybe?" So what's the particular use-case >> here? Where is it necessary to export inaccurate floating point numbers in >> JSON? And should such a use-case indeed exist, why is this a global setting >> rather than an option of json_encode? Furthermore, note that even without >> this new ini option, you always have the option of temporarily changing >> serialize_precision for a json_encode call, if you *really* need it. >> >> Please also take a look at this comment on the implementation: >> https://github.com/php/php-src/pull/1455#discussion_r53933480 >> >> > To be honest I have been thinking again about it before posting it. I > thought that it might be good to have at least a voting option or keep it > there for discussion but I don't really mind to drop it and just use just > serialize_precision by default. I know that it was me who suggested > json.precision initialy but it wasn't probably the best idea and it might > be a bit confusing for users. If no one thinks that it's useful and we > should have a vote about it, I will remove it in the next couple of days. > > I have updated the RFC and dropped the json.precision part. Instead of that, there will be a voting option only whether to use serialize_precision for json_encode. If there are no other issues, I would like to open voting sometimes next week. Cheers Jakub