Nombor Besar Tersalah Dipotong dalam JavaScript
Timbul persoalan mengapa nombor besar, seperti 714341252076979033, dibundarkan secara salah apabila dihuraikan daripada rentetan JSON menggunakan JSON.parse(). Nilai yang terhasil dalam konsol menunjukkan nombor terpotong, dengan digit bererti dialih keluar.
Jawapan
Fenomena ini berlaku kerana jenis nombor JavaScript, yang berdasarkan IEEE-754 titik terapung berketepatan ganda, mempunyai had dalam mewakili integer besar. Titik terapung berketepatan dua mempunyai nilai integer selamat maksimum 9,007,199,254,740,991 (Number.MAX_SAFE_INTEGER). Di luar titik ini, ketepatan perwakilan titik terapung berkurangan, mengakibatkan pembundaran integer berturut-turut.
Dalam kes khusus ini, nombor besar yang dihuraikan melebihi Nombor.MAX_SAFE_INTEGER dengan jidar yang ketara. Akibatnya, algoritma pembundaran yang digunakan oleh JavaScript memotong digit paling tidak bererti untuk mewakili nombor sedekat mungkin dalam had sistem titik terapungnya.
Penyelesaian
Untuk mengelakkan isu ini, adalah disyorkan untuk menggunakan BigInt untuk mewakili integer besar yang melebihi kapasiti jenis nombor JavaScript. BigInt ialah jenis data yang ditambahkan dalam ES2020 yang boleh mengendalikan integer dengan panjang sewenang-wenangnya. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa BigInt tidak disokong secara asli dalam JSON, jadi kaedah alternatif mesti digunakan untuk mewakili dan menghuraikan integer besar.
Satu pendekatan ialah menggunakan fungsi reviver apabila menghuraikan JSON. Fungsi reviver boleh menukar perwakilan rentetan integer besar kepada objek BigInt, membolehkan ia dikendalikan dengan betul dalam aplikasi JavaScript.
Atas ialah kandungan terperinci Mengapa Nombor Besar Dipenggal Apabila Menggunakan JSON.parse() dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!