Bug #70137 [Opn->Csd]: json_encode/decode should use max precision for float like values by default
| From: | bukka@php.net | Date: | Tue, 06 Sep 2016 17:52:09 +0000 |
| Subject: | Bug #70137 [Opn->Csd]: json_encode/decode should use max precision for float like values by default | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-203842@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=70137&edit=1
ID: 70137
Updated by: bukka@php.net
Reported by: yohgaki@php.net
Summary: json_encode/decode should use max precision for
float like values by default
-Status: Open
+Status: Closed
Type: Bug
Package: JSON related
Operating System: any
PHP Version: Irrelevant
-Assigned To:
+Assigned To: bukka
Block user comment: N
Private report: N
New Comment:
This has been already done in precise float value RFC implementaion (sorry forgot to update this bug
report) that is part of 7.1
Previous Comments:
------------------------------------------------------------------------
[2015-07-25 22:16:14] yohgaki@php.net
Description:
------------
json_encode/decode uses 'precision'.
It should use 'serialize.precision' to handle float like JSON numeric to be more precise.
Test script:
---------------
[yohgaki@dev PHP-master]$ php -r '$v = 10/3; var_dump(json_encode($v));'
string(15) "3.3333333333333"
[yohgaki@dev PHP-master]$ php -r '$v = 10/3; ini_set("precision",
17);var_dump(json_encode($v));'
string(18) "3.3333333333333335"
[yohgaki@dev PHP-master]$ php
<?php
var_dump(json_decode('{ "v" : 0.12345678901234567890 }'));
ini_set('precision', 17);
var_dump(json_decode('{ "v" : 0.12345678901234567890 }'));
?>
object(stdClass)#1 (1) {
["v"]=>
float(0.12345678901235)
}
object(stdClass)#1 (1) {
["v"]=>
float(0.12345678901234568)
}
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=70137&edit=1