Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menghalang JavaScript daripada Menukar Integer Besar kepada Notasi Saintifik dalam Rentetan?

Bagaimana untuk Menghalang JavaScript daripada Menukar Integer Besar kepada Notasi Saintifik dalam Rentetan?

Barbara Streisand
Lepaskan: 2024-12-10 08:59:10
asal
714 orang telah melayarinya

How to Prevent JavaScript from Converting Large Integers to Scientific Notation in Strings?

Notasi saintifik untuk integer besar dalam JavaScript

JavaScript akan menukar integer yang lebih panjang daripada 21 digit kepada notasi saintifik dalam konteks rentetan . Jika anda perlu mencetak integer sebagai sebahagian daripada URL, bagaimanakah anda menghalang penukaran daripada berlaku?

Penyelesaian

JavaScript menyediakan kaedah Number.toFixed, tetapi jika nombor itu lebih besar daripada atau sama dengan 1e21 dengan ketepatan sehingga 20, ia akan menggunakan kaedah saintifik tatatanda. Jika tidak, anda boleh melaksanakannya sendiri, tetapi ia akan menjadi kucar-kacir.

function toFixed(x) {
  if (Math.abs(x) < 1.0) {
    var e = parseInt(x.toString().split('e-')[1]);
    if (e) {
        x *= Math.pow(10,e-1);
        x = '0.' + (new Array(e)).join('0') + x.toString().substring(2);
    }
  } else {
    var e = parseInt(x.toString().split('+')[1]);
    if (e > 20) {
        e -= 20;
        x /= Math.pow(10,e);
        x += (new Array(e+1)).join('0');
    }
  }
  return x;
}
Salin selepas log masuk

Kaedah di atas menggunakan pengulangan rentetan yang murah dan mudah ((Array(n 1) baharu).join(str)). Anda juga boleh menentukan String.prototype.repeat di atas ini dan menggunakan pendaraban petani Rusia.

Sila ambil perhatian bahawa jawapan ini hanya terpakai untuk memaparkan nombor besar tanpa menggunakan notasi saintifik. Untuk sebarang kes lain, anda harus menggunakan perpustakaan BigInt seperti BigNumber, BigInt Leemon atau BigInteger. Selain itu, BigInt asli baharu akan datang tidak lama lagi, disokong oleh penyemak imbas berasaskan Chromium dan Chromium (Chrome, Edge baharu [akhir v79], Brave) dan Firefox, dengan sokongan dalam pembangunan untuk Safari.

Berikut ialah cara menukar menggunakan BigInt: BigInt(n).toString()

Contoh:

const n = 13523563246234613317632;
console.log("toFixed (wrong): " + n.toFixed());
console.log("BigInt (right):  " + BigInt(n).toString());
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menghalang JavaScript daripada Menukar Integer Besar kepada Notasi Saintifik dalam Rentetan?. 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