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
[email protected]