Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:85536 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 90372 invoked from network); 30 Mar 2015 01:26:14 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 30 Mar 2015 01:26:14 -0000 Authentication-Results: pb1.pair.com header.from=yohgaki@gmail.com; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=yohgaki@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.214.173 as permitted sender) X-PHP-List-Original-Sender: yohgaki@gmail.com X-Host-Fingerprint: 209.85.214.173 mail-ob0-f173.google.com Received: from [209.85.214.173] ([209.85.214.173:36349] helo=mail-ob0-f173.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id EA/00-24000-536A8155 for ; Sun, 29 Mar 2015 20:26:13 -0500 Received: by obbld8 with SMTP id ld8so56603744obb.3 for ; Sun, 29 Mar 2015 18:26:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-type; bh=Jxuni39VX/ldi3CUWxJt2Skg1PAMlzDftyUmyhkG9wI=; b=GDjIH1lXcIBKR4ZUQF3nwhfIT4PHbsQnn5kBEVgYFFbYRt8QcM/rczRLZJBN1Yql8D 4fZFnKBwTUPrMV1RacNKPrTCxbNk/3oUVk53neWVrZtfqhE8RlSgnE33NSl0htnq31/u nz5Ob4jXBErKmCmLhl+1xjFpgPnAmKtDqk6d28fIG7jd54QqaGMv+u2dbGlsBIDitu8L 49R2Ihncb8t7sigMceknBiA7vHlamKSQ/qOpr1zSaflvhE+RX0UpY9Jp3EhtSRlcH4d5 19ckG9pT2rpdUstC6hhgksbpzu2pzA3L5zVeZ52gz3M3MSxrkOoekBU7JVaxw2y3pfww fj1w== X-Received: by 10.182.224.198 with SMTP id re6mr11148202obc.49.1427678769531; Sun, 29 Mar 2015 18:26:09 -0700 (PDT) MIME-Version: 1.0 Sender: yohgaki@gmail.com Received: by 10.202.58.2 with HTTP; Sun, 29 Mar 2015 18:25:29 -0700 (PDT) In-Reply-To: References: Date: Mon, 30 Mar 2015 10:25:29 +0900 X-Google-Sender-Auth: yNi-fct2BUBt-ySZgzy6JtrtPfQ Message-ID: To: Jakub Zelenka Cc: PHP internals list Content-Type: multipart/alternative; boundary=089e0139ff7ce9525f0512775ddf Subject: Re: [PHP-DEV] JSON float number as string From: yohgaki@ohgaki.net (Yasuo Ohgaki) --089e0139ff7ce9525f0512775ddf Content-Type: text/plain; charset=UTF-8 Hi all, On Mon, Mar 30, 2015 at 9:07 AM, Yasuo Ohgaki wrote: > Hi Jakub, > > On Mon, Mar 30, 2015 at 4:33 AM, Jakub Zelenka 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? >> > > Converting int/float to PHP native type is obvious bug. > We must consider compatibility for released versions, so > +1 for adding JSON_FLOAT_AS_STRING option. > > "int" should be fixed also. > http://3v4l.org/95dHM > > So option may be JSON_SCALAR_AS_STRING or > additional JSON_INT_AS_STRING. > > PHP7 should have string scalars by default. IMHO. > I didn't notice this bug before. This bug make me worry that new PHP7 type hint will create a lot of type casting bugs because even C programmer makes this kind of design mistake... If it's possible, coercive STH for weak type hint mode will help to reduce type casting bugs. IMHO. Regards, -- Yasuo Ohgaki yohgaki@ohgaki.net --089e0139ff7ce9525f0512775ddf--