On Tue, Nov 4, 2014 at 4:13 AM, Juan Basso <jrba...@gmail.com> wrote:

> Hi,
>
> I opened a pull request[1] in order to solve the bug 50224[2] and it ended
> creating this pull request to add a new flag called
> JSON_PRESERVE_FRACTIONAL_PART on json_encode function. This flag will make
> the json encode to output float number always with decimal part, even when
> it is 0.
>
> Currently if you try to convert 10.0 using json_encode it outputs 10. It
> means if you decode it it will give an integer instead a float. In PHP
> words, json_decode(json_encode(10.0)) !== 10.0.
>
> After some researches and discussions it is not considered a bug because
> JSON specs treat integer and floats as number. Looking how other languages
> treat this encoding I could find it:
> - C (using lib jansson) and Ruby the output contains the decimal portion;
> - Python and Javascript outputs without the decimal portion.
>
> So it is kind of common to have different behaviors since JSON specs define
> it as just number. The idea of the new flag is allow PHP to behave the both
> ways.
>
> In the pull request Stanislav Malyshev suggested to merge it in the 5.6,
> but just want to see if someone else has any objection. Ferenc Kovacs
> and Jakub Zelenka also are in favor of merging on 5.6.
> Jakub completed suggesting to have this option enabled by default on PHP 7.
>
> Anyone has any objection on merging it on 5.6? Some comments about enabling
> it by default in 7?
>
> As a side note, with the pull request the encode of floats are about 20%
> faster, even after the flag check. This improvement just affect float
> encoding and has no impact on the other types.
>
> [1] https://github.com/php/php-src/pull/642
> [2] https://bugs.php.net/bug.php?id=50224
>
>
> Thanks,
> Juan Basso
>

Hi,

just a slight correction:
as far as I can tell, Jakus was ok with the general idea and even with
turning this into the default, but he stated that it should only happen in
a major version (as it would cause a slight BC, maybe this could cause
problems for some people who are expecting the zeroes to be truncated from
integer values) and he also stated that he thinks that there is no reason
for a hurry to have this in a micro release, so this could wait until 7.0.

-- 
Ferenc Kovács
@Tyr43l - http://tyrael.hu

Reply via email to