Rumah >hujung hadapan web >tutorial js >Mengapa Nombor Besar Dibundarkan Secara Tidak Betul dalam Penghuraian JSON 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);
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!