Rumah > hujung hadapan web > tutorial js > Mengapa Nombor Besar Dipenggal Apabila Menggunakan JSON.parse() dalam JavaScript?

Mengapa Nombor Besar Dipenggal Apabila Menggunakan JSON.parse() dalam JavaScript?

Susan Sarandon
Lepaskan: 2024-12-24 04:17:14
asal
360 orang telah melayarinya

Why are Large Numbers Truncated When Using JSON.parse() in JavaScript?

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!

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