이것은 더 잘 알고 있기 때문에 질문이 아닙니다. json_encode()
PHP7.1.1 을 사용하는 응용 프로그램을 업데이트 했는데 수레가 때때로 17 자리를 확장하도록 변경되는 문제를 확인했습니다. 문서에 따르면 PHP 7.1.x는 serialize_precision
double 값을 인코딩 할 때 정밀도 대신 사용하기 시작했습니다 . 이로 인해 예제 값이 발생했다고 생각합니다.
472.185
될
472.18500000000006
그 값이 지나간 후에 json_encode()
. 내 발견 이후로 PHP 7.0.16으로 되 돌렸고 더 이상 json_encode()
. 또한 PHP 7.0.16으로 되돌리기 전에 PHP 7.1.2로 업데이트하려고했습니다.
이 질문에 대한 이유는 PHP 에서 비롯된 것입니다. 것이지만, 결국 모든 이유는 json_encode()
.
이 문제에 대한 해결책을 아는 사람이 있다면 추론 / 수정에 대해 기꺼이 경청 할 것입니다.
다차원 배열에서 발췌 (이전) :
[staticYaxisInfo] => Array
(
[17] => stdClass Object
(
[variable_id] => 17
[static] => 1
[min] => 0
[max] => 472.185
[locked_static] => 1
)
)
그리고 통과 후 json_encode()
...
"staticYaxisInfo":
{
"17":
{
"variable_id": "17",
"static": "1",
"min": 0,
"max": 472.18500000000006,
"locked_static": "1"
}
},
ini_set('serialize_precision', 14); ini_set('precision', 14);
아마도 예전처럼 직렬화 될 것입니다. 그러나 당신이 정말로 당신의 float에 특정한 정밀도에 의존한다면 당신은 뭔가 잘못하고있는 것입니다.