यह एक सवाल नहीं है क्योंकि यह अधिक जागरूक है। मैंने एक एप्लिकेशन को अपडेट किया जो json_encode()
PHP7.1.1 का उपयोग करता है और मैं एक मुद्दे को देख रहा था जिसमें फ्लोट्स को कभी-कभी 17 अंकों का विस्तार करने के लिए बदल दिया जाता था। प्रलेखन के अनुसार, PHP 7.1.x ने serialize_precision
दोहरे मानों को एन्कोडिंग करते समय सटीक के बजाय उपयोग करना शुरू कर दिया । मैं अनुमान लगा रहा हूं कि इसका एक उदाहरण मूल्य है
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);
अगर आप वास्तव में अपने फ्लोट पर एक विशिष्ट परिशुद्धता पर भरोसा करते हैं, तो आप इसे कुछ गलत कर रहे हैं, जैसा कि आप इसका उपयोग करते हैं, शायद इसे क्रमबद्ध करेंगे।