Nilai integer maks dalam javascript

Tutorial JavaScript ini menjelaskan cara menggunakan fungsi matematika yang disebut max() dengan sintaks dan contoh

Keterangan

Dalam JavaScript, max() adalah fungsi yang digunakan untuk mengembalikan nilai terbesar dari angka yang diberikan sebagai parameter. Karena fungsi max() adalah fungsi statis dari objek Math, maka harus dipanggil melalui objek placeholder yang disebut Math

Sintaksis

Dalam JavaScript, sintaks untuk fungsi max() adalah

Math.max([number1, number2, .. number_n]);

Parameter atau Argumen

angka1, angka2,. number_nOpsional. Angka-angka yang akan dievaluasi untuk menentukan nilai terbesar

Pengembalian

Fungsi max() mengembalikan nilai terbesar dari angka yang diberikan

Jika tidak ada parameter yang diberikan, fungsi max() akan mengembalikan -Infinity

Jika salah satu parameter yang diberikan bukan angka, fungsi max() akan mengembalikan NaN

Catatan

  • Math adalah objek placeholder yang berisi fungsi matematika dan konstanta yang salah satunya adalah max()

Contoh

Mari kita lihat contoh cara menggunakan fungsi max() di JavaScript

Sebagai contoh

console.log(Math.max(10, 20));
console.log(Math.max(10, 20, 30));
console.log(Math.max(-2, -4, -6, -8));
_

Dalam contoh ini, kami telah memanggil fungsi max() menggunakan kelas Math

Kami telah menulis output dari fungsi max() ke log konsol browser web, untuk tujuan demonstrasi, untuk menunjukkan apa yang dikembalikan oleh fungsi max()

Berikut ini akan ditampilkan ke log konsol browser web

20
30
-2

Dalam contoh ini, keluaran pertama ke log konsol mengembalikan 20 yang merupakan nilai terbesar dari 10 dan 20

Output kedua ke log konsol mengembalikan 30 yang merupakan nilai terbesar dari 10, 20 dan 30

Output ketiga ke log konsol mengembalikan -2 yang merupakan nilai terbesar -2, -4, -6 dan -8

Menggunakan fungsi max() untuk menemukan Nilai Terbesar dalam Array

Terakhir, kita akan melihat bagaimana menggunakan fungsi max() untuk menemukan nilai terbesar dalam sebuah array

Sebagai contoh

var totn_array = [5, 10, 15, 20, 25];

console.log(Math.max(...totn_array));

Berikut ini akan ditampilkan ke log konsol browser web

25
_

Dalam contoh ini, metode max() mengembalikan 25 yang merupakan nilai terbesar dari array yang disebut totn_array. Array ini terdiri dari 5 elemen dengan nilai numerik. 5, 10, 15, 20 dan 25

Seperti semua hal, JavaScript memiliki batasan. Menariknya ada batasan buatan dan kemudian ada batasan fisik. Saya akan mengeksplorasi batas-batas ini dan mencoba dan mendorong mereka sebanyak mungkin ke batas mereka yang sebenarnya

Dalam JavaScript, sebuah Angka ditentukan oleh w3schools. com sebagai

Tidak seperti banyak bahasa pemrograman lainnya, JavaScript tidak mendefinisikan berbagai jenis angka, seperti bilangan bulat, pendek, panjang, floating-point, dll

Nomor JavaScript selalu disimpan sebagai angka floating point presisi ganda, mengikuti standar IEEE 754 internasional

Format ini menyimpan angka dalam 64 bit, dimana angka (pecahan) disimpan dalam bit 0 hingga 51, eksponen dalam bit 52 hingga 62, dan tanda masuk bit 63

Apa artinya ini secara praktis? . 7976931348623157e+308, atau menggunakan Nomor. MAX_VALUE;

Hal-hal mulai menjadi aneh ketika kita mencoba melampaui titik ini. Saya mencoba menjalankan kode di bawah ini mengharapkan "Infinity". Itu tidak terjadi

console.log(Number.MAX_VALUE+1);1.7976931348623157e+308

Ini tidak sesuai dengan dokumentasi yang menyatakan “Angka yang lebih besar dari MAX_VALUE direpresentasikan sebagai tak terhingga. ”

Catatan tambahan. Tes di bawah ini dilakukan dengan menggunakan konsol Google Chrome, sehingga juru bahasa JS lainnya mungkin memberikan hasil yang berbeda

Saya kemudian menemukan angka maksimum yang bukan Infinity

console.log(Number.MAX_VALUE+999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999);1.7976931348623157e+308
_

Jika kita menambahkan ekstra "1" seperti di bawah ini

console.log(Number.MAX_VALUE+9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999991);Infinity

Kami sekarang mendapatkan Infinity. Jadi apa yang terjadi?

Sekarang mari kita bicara tentang Angka. MAX_SAFE_INTEGER, yang didefinisikan sebagai

Konstanta Number.MAX_SAFE_INTEGER mewakili bilangan bulat aman maksimum dalam JavaScript (2⁵³-1)

Penjelasan praktisnya adalah bahwa apa pun di luar batas ini, juru bahasa JavaScript tidak lagi bertanggung jawab atas pengoperasiannya

Lihatlah kode di bawah ini

console.log(Number.MAX_SAFE_INTEGER);
9007199254740991
console.log(Number.MAX_SAFE_INTEGER+1);
9007199254740992
let a = Number.MAX_SAFE_INTEGER+1;
let b = Number.MAX_SAFE_INTEGER+2;
console.log(a === b);
true
_

Dari hasil di atas, kami melihat bahwa kami pasti dapat melampaui “MAX_SAFE_INTEGER”, tetapi apa pun yang ingin kami lakukan dari sudut pandang praktis tidak lagi berfungsi. Baik "a" dan "b" dianggap sama, padahal kita tahu sebenarnya tidak

Bagaimana jika kita ingin melampaui MAX_SAFE_INTEGER?

JavaScript memiliki fungsi asli yang disebut BigInt. Seperti yang dijelaskan namanya, ini menangani angka besar. Ini juga sangat mudah untuk diaktifkan. Tambahkan "n" ke akhir nomor dan langsung dikonversi

const theBiggestInt = 9007199254740991n;
typeof theBiggestInt;
"bigint"
_

Jadi mengapa tidak menggunakan "BigInt" saja setiap saat? . Hasil tangkapan?

Ini berarti bahwa jika Anda mengonversi dari Angka ke BigInt dan mundur lagi, Anda dapat kehilangan presisi. Ada juga tangkapan kompatibilitas karena hanya browser modern yang mendukungnya. Ini sebenarnya bukan masalah karena kemungkinan besar hanya akan dibutuhkan di NodeJS, yang didukung

Kami sekarang akan mencoba MAX_VALUE kami yang sebelumnya mengalami masalah dan membungkus hasilnya di dalam BigInt

console.log(BigInt(Number.MAX_VALUE));
179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368n
console.log(BigInt(Number.MAX_VALUE+1));
179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368n

Contoh di atas menunjukkan apa yang sedang terjadi. Saat kami menambahkan lebih banyak ke Angka. MAX_VALUE, diabaikan begitu saja. Kedua persamaan menghasilkan jawaban yang sama. Mengapa?

Apa yang bisa kita lakukan sekarang adalah menggunakan BigInt untuk melampaui Angka. MAX_VALUE. Kali ini, kita akan menggunakan peningkatan terhadap nilai BigInt dari MAX_VALUE, bukan hasil dari MAX_VALUE. Di bawah ini, perhatikan posisi “+1n” pada tanda kurung dibandingkan dengan kode di atas

console.log(BigInt(Number.MAX_VALUE)+1n);
179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858369n

Seperti yang bisa kita lihat di atas, angka terakhir kita telah meningkat menjadi "9" dari "8". Jadi BigInt berfungsi seperti yang dijelaskan. Mari kita coba perbandingan kita

let ab = BigInt(Number.MAX_VALUE);
let bb = BigInt(Number.MAX_VALUE)+1n;
console.log(ab === bb);
false

Seperti yang bisa kita lihat, kita bisa melakukan perbandingan di atas Angka. Batas MAX_VALUE, dengan kelemahan karena tidak dapat menggunakan tempat desimal

BigInt memang memiliki batasan, namun tidak ada "batas keras" atas atau bahkan "batas lunak" apa pun. Dokumentasi tidak menyebutkannya. Dari pengalaman orang lain di StackOverflow, tampaknya batasannya diatur oleh juru bahasa JavaScript dan juga batasan memori perangkat. Ada juga kinerja yang mencolok saat mencapai angka yang sangat besar

Singkatnya, dimungkinkan untuk melampaui batas nomor asli JavaScript pada kesempatan langka yang Anda perlukan. Salah satu contohnya adalah jika Anda ingin menemukan bilangan prima karena ini tidak memerlukan tempat desimal

Dalam kebanyakan kasus, meskipun Anda tidak perlu menggunakan BigInt, tetapi Anda ingin memastikan bahwa Anda tidak melampaui batas asli dengan membandingkannya dengan Number. MAX_SAFE_INTEGER jika Anda tahu Anda mungkin mencapai angka itu

Berapa MAX_VALUE untuk bilangan bulat?

MAX_VALUE adalah angka dalam kelas Java Integer dari java. paket bahasa. Ini adalah bilangan bulat maksimum yang dapat direpresentasikan dalam 32 bit. Nilai persisnya adalah 2147483647 i. e. 231-1 .

Berapa maksimal 32

Integer bertanda 32-bit. Ini memiliki nilai minimum -2.147.483.648 dan nilai maksimum 2.147.483.647 (inklusif) .

Bagaimana menemukan nilai maksimum dalam JavaScript?

Larik. prototipe. reduce() dapat digunakan untuk menemukan elemen maksimum dalam array numerik, dengan membandingkan setiap nilai. .
const arr = [1, 2, 3]; . kurangi((a, b) => Matematika. maks(a, b), -Tak terhingga);.
fungsi getMaxOfArray(numArray) { kembali Matematika. maks. .
const arr = [1, 2, 3]; . maks(

Mengapa Max INT 2.147.483.647?

Dalam komputasi. Angka 2.147.483.647 (atau heksadesimal 7FFFFFFF16) adalah nilai positif maksimum untuk bilangan bulat biner bertanda 32-bit dalam komputasi . Oleh karena itu, ini adalah nilai maksimum untuk variabel yang dideklarasikan sebagai bilangan bulat (mis. g. , sebagai int ) dalam banyak bahasa pemrograman.