Rumah > hujung hadapan web > tutorial js > Mengapa Nombor Besar Dibundarkan Secara Tidak Betul dalam Penghuraian JSON JavaScript?

Mengapa Nombor Besar Dibundarkan Secara Tidak Betul dalam Penghuraian JSON JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-12-17 15:27:10
asal
416 orang telah melayarinya

Why Are Large Numbers Rounded Incorrectly in JavaScript JSON Parsing?

Nombor Besar Tersilap Dibundarkan dalam JavaScript

Apabila dihuraikan menggunakan JSON.parse, nilai berangka yang besar dalam rentetan JSON kadangkala boleh dibundarkan secara salah dalam JavaScript. Isu ini timbul kerana jenis nombor JavaScript mempunyai kapasiti terhad, yang diterangkan dalam spesifikasi format titik terapung binari berketepatan dua IEEE-754.

JavaScript boleh mewakili nombor dengan tepat sehingga lebih kurang 9007199254740991 (Number.MAX_SAFE_INTEGER) . Di luar nilai ini, format kehilangan ketepatan dan nombor mungkin dibundarkan kepada nilai yang boleh diwakili terdekat.

Sebagai contoh, kod berikut menunjukkan tingkah laku ini:

const jsonString = '{"id":714341252076979033,"type":"FUZZY"}';
const jsonParsed = JSON.parse(jsonString);
console.log(jsonString, jsonParsed);
Salin selepas log masuk

Apabila dilaksanakan, nilai daripada jsonParsed.id tersalah dibundarkan kepada 714341252076979100. Ini kerana nilai asal, 714341252076979033, berada di luar julat integer selamat.

Untuk mengelakkan isu ini, pertimbangkan untuk menggunakan perwakilan rentetan untuk nilai berangka yang besar dan bukannya nombor. Sebagai alternatif, anda boleh menggunakan jenis data BigInt dalam ES2020, yang menyokong integer yang besar secara sewenang-wenangnya. Walau bagaimanapun, ambil perhatian bahawa nilai BigInt tidak boleh disirikan secara asli kepada JSON, jadi anda perlu menggunakan penyeri/deserializer tersuai.

Atas ialah kandungan terperinci Mengapa Nombor Besar Dibundarkan Secara Tidak Betul dalam Penghuraian JSON JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan