Hi all, I had to work with Google Map API and need to handle values precisely. Fortunately, it seems values are IEEE double, but I get rounded float values by default.
For example, <?php $json = ' { "results" : [ { "elevation" : 1608.637939453125, "location" : { "lat" : 39.73915360, "lng" : -104.98470340 }, "resolution" : 4.771975994110107 }, { "elevation" : -50.78903579711914, "location" : { "lat" : 36.4555560, "lng" : -116.8666670 }, "resolution" : 19.08790397644043 } ], "status" : "OK" } '; var_dump(json_decode($json)); ?> object(stdClass)#5 (2) { ["results"]=> array(2) { [0]=> object(stdClass)#1 (3) { ["elevation"]=> float(1608.6379394531) ["location"]=> object(stdClass)#2 (2) { ["lat"]=> float(39.7391536) ["lng"]=> float(-104.9847034) } ["resolution"]=> float(4.7719759941101) } [1]=> object(stdClass)#3 (3) { ["elevation"]=> float(-50.789035797119) ["location"]=> object(stdClass)#4 (2) { ["lat"]=> float(36.455556) ["lng"]=> float(-116.866667) } ["resolution"]=> float(19.08790397644) } } ["status"]=> string(2) "OK" } json_decode()/json_encode() must be able to handle precise IEEE double value by _default_. serialize() is changed to use max precision. json_decode/encode should do the same at least. I think this change should be provided as bug fix. Any comments? -- Yasuo Ohgaki yohg...@ohgaki.net