Bagaimana Anda menyimpan angka besar dalam javascript?

Bagaimana Anda menyimpan angka besar dalam javascript?

pengantar

Pada artikel ini, kita akan mengerjakan angka yang sangat besar untuk mendapatkan jawaban yang tepat

Masalah

JavaScript memiliki batasan hanya memungkinkan ketepatan sekitar 16 digit untuk format angka

Nilai minimum & maksimum yang dapat dicapai suatu angka tanpa kehilangan presisi adalah

console.log(10000000000000001+1) // => 10000000000000000
console.log(10000000000000002-1) // => 10000000000000000
console.log(10000000000000002*3) // => 30000000000000010
console.log(10000000000000001==10000000000000000) // => true
1, di mana 2^53 = 9007199254740992

Jika kita melampaui batas ini maka kita akan kehilangan presisi

console.log(1000000000000011112); // => 1000000000000011100
_

Masuk ke mode layar penuh Keluar dari mode layar penuh

Ketidaktepatan ini mempengaruhi operasi aritmatika juga

console.log(10000000000000001+1) // => 10000000000000000
console.log(10000000000000002-1) // => 10000000000000000
console.log(10000000000000002*3) // => 30000000000000010
console.log(10000000000000001==10000000000000000) // => true

Masuk ke mode layar penuh Keluar dari mode layar penuh

Sulit untuk mendapatkan jawaban dari operasi aritmatika bilangan bulat besar

Solusinya

Untuk mengatasi ketidaktepatan ini, Kami telah membuat perpustakaan bernama sateek. js

Kata sateek berarti tepat atau tepat dalam bahasa hindi

Untuk menggunakan pustaka ini, Enkode bilangan bulat besar Anda dalam format string & panggil fungsi yang disediakan oleh sateek. js

sateek.add("10000000000000001", "1"); // => 10000000000000002
sateek.subtract("10000000000000002", "1"); // => 10000000000000001
sateek.multiply("10000000000000002", "3"); // => 30000000000000006

Masuk ke mode layar penuh Keluar dari mode layar penuh

Ini mengembalikan output dalam format string

Instalasi

Satek. js tersedia di github & npm atau Anda cukup menambahkan CDN-nya ke file JavaScript Anda

Node. js

1) Untuk menggunakan library ini, Anda perlu menginstal Node. js & npm
2) Sekarang jalankan perintah berikut di direktori proyek Anda

npm install --save sateek
_

Masuk ke mode layar penuh Keluar dari mode layar penuh

3) Impor satek. js di proyek Anda

var sateek = require('sateek')();

Masuk ke mode layar penuh Keluar dari mode layar penuh

JavaScript

1) Buat file HTML & tulis beberapa kode di dalamnya

<html>
    <body>

    </body>    
    <script type="module">
        import sateekModule from 'https://cdn.skypack.dev/sateek';
        const sateek = sateekModule();
        console.log(sateek.add("10000000000000002", "3"));
    </script>
</html>
_

Masuk ke mode layar penuh Keluar dari mode layar penuh

Penggunaan

Satek. js menawarkan 5 fungsi
1) tambahkan(n1,n2);
2) kurangi(n1,n2);
3) bagi(n1,n2);
4) bandingkan(n1,n2);

Di mana n1 & n2 adalah dua angka yang dikodekan dalam format string

Menambahkan

sateek.add("10000000000000001", "1"); // => 10000000000000002

Masuk ke mode layar penuh Keluar dari mode layar penuh

Mengurangi

sateek.subtract("10000000000000002", "1"); // => 10000000000000001
_

Masuk ke mode layar penuh Keluar dari mode layar penuh

Berkembang biak

sateek.multiply("10000000000000002", "3"); // => 30000000000000006
_

Masuk ke mode layar penuh Keluar dari mode layar penuh

Membagi

sateek.divide("20000000000000022", "2"); // => 10000000000000011

Masuk ke mode layar penuh Keluar dari mode layar penuh

Membandingkan

console.log(10000000000000001+1) // => 10000000000000000
console.log(10000000000000002-1) // => 10000000000000000
console.log(10000000000000002*3) // => 30000000000000010
console.log(10000000000000001==10000000000000000) // => true
0

Masuk ke mode layar penuh Keluar dari mode layar penuh

jika n1>n2, ia mengembalikan 1
jika n1jika n1==n2, ia mengembalikan 0

Kesimpulan

Setiap perpustakaan memiliki kelebihan & keterbatasannya masing-masing. Berikut beberapa batasan satek. perpustakaan js

1) Satek. js lebih berfokus pada presisi dibandingkan dengan efisiensi
2) Ini hanya bekerja dengan bilangan bulat
3) Operasi pembagian hanya bekerja ketika dividen lebih besar dari pembagi
4) Operasi pembagian hanya mengembalikan hasil bagi

Kami telah menguji pustaka ini dengan kasus uji besar, namun jika Anda menemukan masalah, jangan ragu untuk melaporkannya di github/npm atau kirimkan saya email di kalpitrathore@gmail. com

Bagaimana Anda menyimpan sejumlah besar?

Di bawah ini adalah langkah-langkahnya. .
Ambil angka besar sebagai input dan simpan dalam sebuah string
Buat array integer arr[] dengan panjang yang sama dengan ukuran string
Ulangi semua karakter (digit) string str satu per satu dan simpan digit tersebut dalam indeks yang sesuai dari array arr

Bagaimana angka disimpan dalam JavaScript?

JavaScript Number Selalu 64-bit Floating Point . double precision floating point numbers, following the international IEEE 754 standard.

Berapa lama angka dalam JavaScript?

Nomor JavaScript adalah angka floating-point 64bit (8 byte) yang memiliki rentang 5e-324 (negatif) hingga 1. 7976931348623157e+308 (positif) .

Apa nilai terbesar yang dapat disimpan oleh bilangan bulat JavaScript?

Konstanta MAX_SAFE_INTEGER memiliki nilai 9007199254740991 (9.007.199.254.740.991, atau ~9 kuadriliun). Format floating point presisi ganda hanya memiliki 52 bit untuk mewakili mantissa, sehingga mantissa hanya dapat dengan aman mewakili bilangan bulat antara -(253 – 1) dan 253 – 1.