On Thu, Jul 30, 2015 at 1:25 AM, Yasuo Ohgaki <yohg...@ohgaki.net> wrote:
> Hi all, > > On Thu, Jul 30, 2015 at 7:44 AM, Yasuo Ohgaki <yohg...@ohgaki.net> wrote: > >> On Thu, Jul 30, 2015 at 1:13 AM, Nikita Popov <nikita....@gmail.com> >> wrote: >> >>> Instead of continuing to use serialize_precision, which will produce >>> unnecessarily long outputs for many values, why don't we just switch to >>> using the 0 mode of zend_dtoa, i.e. to return the shortest output that is >>> still accurate if interpreted in round-to-nearest. I think this is what >>> everybody else is using when they convert floating point numbers to >>> strings. I guess we may not be able to change normal floating point >>> printing to use this, but this seems like the best mode for anything using >>> serialize_precision now and everything that should be using it (like JSON, >>> and queries, etc). >> >> >> I prefer your proposal! >> Your proposal is a lot better than now. >> Anyone has opinion for this? >> >> I'm writing the RFC and I would like to make this the first option. i.e. >> serialize_precision=0 uses "zend_dtoa 0 mode" for all data exchange >> functions (json/serialize/var_exrport. Anyone care about WDDX/XML_RPC?) >> > > I wrote draft RFC. > > https://wiki.php.net/rfc/precise_float_value > > Please comment. I would like to start RFC discussion shortly. > Thank you. > Nice idea about using a special serialize_precision value for this. This allows to keep BC for those that have tests for particular serialize output or similar things. I would suggest to default serialize_precision to -1 in PHP 7 -- if people want the previous behavior they can still have it, but I think -1 is the more reasonable default as it matches what one would naturally expect. I don't see the need for having a separate setting for JSON. Having a dozen different float precision settings will not help anyone. Nikita