Aktueller Standort: Startseite> Neueste Artikel> Wie vermeide ich die Funktion JSON_DECODE, wenn sie numerische Genauigkeit verliert, wenn JSON analysiert wird?

Wie vermeide ich die Funktion JSON_DECODE, wenn sie numerische Genauigkeit verliert, wenn JSON analysiert wird?

gitbox 2025-09-12
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Die folgenden Teile haben nichts mit dem Inhalt des Artikels zu tun</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Dies ist der Anfangscode des Beispiels\n"</span></span><span>;
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">demo</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">"Demo function output"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Starten Sie den Text</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h1>Wie man es vermeidet json_decode Funktionen analysieren JSON Die digitale Genauigkeit geht verloren?</h1>"</span></span><span>;

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>existieren PHP Mitte,verwenden <code>json_decode
" ; Echo "

Wenn Sie JSON_DECODE verwenden, um direkt zu analysieren:

"
; Echo "
\ $ data = json_decode (\ $ json, true); \ nvar_dump (\ $ data);
"
; Echo "

Die erhaltenen Ergebnisse können ungenaue Zahlen verursachen, die zu wissenschaftlichen Notationsergebnissen werden oder die Endzahlen verloren gehen.

" Echo "

Lösung

"
; Echo "

Die Kernidee der Lösung besteht darin, große Zahlen als Zeichenfolgen zu verarbeiten, anstatt sie direkt in Ganzzahlen oder Gleitpunktzahlen zu analysieren. Die folgenden Methoden werden häufig verwendet:

"
; Echo "

Methode eins: Verwenden Sie die Option JSON_BIGINT_AS_STRING

"
; Echo "
\ $ data = json_decode (\ $ json, true, 512, json_bigint_as_string); \ nvar_dump (\ $ data);
"
; Echo "

Der JSON_BIGINT_AS_string hier wandelt Zahlen um, die den PHP -Ganzzahlbereich überschreiten, wodurch der Präzisionsverlust vermieden wird.

"
; Echo "

Methode 2: Umwandle große Zahlen in die JSON -Generationende in Zeichenfolgen

"
; Echo "

Wenn Sie die JSON -Datenerzeugung steuern, können Sie bei der Generierung von JSON:

"
; Echo "
{\" big_number \ ": \" 12345678901234567890 \ "}
"
; Echo "

Auf diese Weise wird die Zeichenfolge direkt während des PHP -Parsens erhalten, ohne Präzision zu verlieren.

"
; Echo "

Methode 3: Verwenden Sie beliebige Präzisionsmathematikbibliothek, um zu verarbeiten

"
; Echo "

Wenn Sie in großen Zahlen Mathe machen müssen, können Sie die BCMath- oder GMP -Erweiterung von PHP verwenden:

"
; Echo "
\ $ bignumber = \ $ data [&#39;big_number&#39;]; \ necho bcadd (\ $ bInnumber, &#39;1&#39;);
"
; Echo "

Auf diese Weise können Berechnungen in jeder Genauigkeit durchgeführt werden, um Probleme der Genauigkeit von schwimmenden Punkten zu vermeiden.

" Echo "

Zusammenfassung

"
; Echo "
    "
; Echo "
  • PHP kann einen Präzisionsverlust bei großen Ganzzahlen erleben, wenn JSON analysiert wird.
  • " Echo "
  • Die Verwendung von JSON_BIGINT_AS_STRING oder Konvertieren von Zahlen in Zeichenfolgen im Voraus ist eine gemeinsame Lösung.
  • "
    ; Echo "
  • Wenn mathematische Operationen erforderlich sind, wird empfohlen, die BCMath- oder GMP -Erweiterung zu verwenden.
  • " Echo "" ; ?>