Rumah  >  Artikel  >  hujung hadapan web  >  Pengenalan kepada julat berangka dalam petua JavaScript_javascript

Pengenalan kepada julat berangka dalam petua JavaScript_javascript

WBOY
WBOYasal
2016-05-16 16:23:391493semak imbas

Semua nombor dalam JavaScript, sama ada integer atau perpuluhan, adalah daripada jenis Nombor. Dalam program ini, jenis Nombor pada asasnya ialah nombor titik terapung 64-bit, yang konsisten dengan nombor titik terapung jenis dua di Jawa oleh itu, semua nombor dalam JavaScript adalah nombor titik terapung. Mengikuti standard IEEE 754 (standard aritmetik titik terapung), julat berangka yang JavaScript boleh wakili ialah tambah atau tolak 1.7976931348623157 darab 10 kepada kuasa 308 dan perpuluhan terkecil yang boleh diwakili ialah tambah atau tolak 5 darab 10 kepada kuasa daripada negatif 324. Kedua-dua nilai sempadan ini boleh diperoleh dengan mengakses atribut MAX_VALUE dan atribut MIN_VALUE bagi objek Nombor masing-masing.

Untuk integer, mengikut keperluan standard ECMAScript (http://ecma262-5.com/ELS5_HTML.htm#Section_8.5), julat integer yang JavaScript boleh mewakili dan melaksanakan operasi aritmetik yang tepat ialah: Tambah atau tolak 2 dinaikkan kepada kuasa ke-53, iaitu, julat daripada nilai minimum -9007199254740992 kepada nilai maksimum 9007199254740992 untuk integer yang melebihi julat ini, JavaScript masih boleh melaksanakan operasi, tetapi ia tidak menjamin operasi; ketepatan keputusan operasi. Perlu diingat bahawa untuk operasi bit integer (seperti anjakan dan operasi lain), JavaScript hanya menyokong integer 32-bit, iaitu, integer dari -2147483648 hingga 2147483647.

Percubaan

Paparkan nilai mutlak nombor terbesar dan nilai mutlak perpuluhan terkecil dalam JavaScript:

Salin kod Kod adalah seperti berikut:

console.log(Nombor.MAX_VALUE);
console.log(Nombor.MIN_VALUE);

Keputusan yang dipaparkan ialah 1.7976931348623157e 308 dan 5e-324.

Untuk integer di luar julat tambah atau tolak 2 dinaikkan kepada kuasa ke-53, JavaScript tidak dapat memberikan hasil pengiraan yang tepat:

Salin kod Kod adalah seperti berikut:

var a = 9007199254740992;
console.log(a 3);


Keputusan pengiraan yang betul hendaklah 9007199254740995, tetapi hasil pengiraan yang diberikan oleh JavaScript ialah 9007199254740996. Selepas cuba menukar formula pengiraan, anda boleh mendapati bahawa selagi integer lebih besar daripada 9007199254740992, ralat dalam hasil pengiraan ini akan kerap berlaku. Jika sisihan dalam ketepatan pengiraan boleh diterima, maka akibat daripada contoh berikut adalah lebih serius:


Salin kod Kod adalah seperti berikut:

var MAX_INT = 9007199254740992;
untuk (var i = MAX_INT; i < MAX_INT 2; i) {
// gelung tak terhingga
}


Disebabkan oleh isu ketepatan pengiraan, pernyataan di atas akan jatuh ke dalam gelung tak terhingga.

Untuk operasi bitwise, JavaScript hanya menyokong integer 32-bit:


Salin kod Kod adalah seperti berikut:

var smallInt = 256;
var bigInt = 2200000000;
console.log(smallInt / 2);
console.log(smallInt >> 1);
console.log(bigInt / 2);
console.log(bigInt >> 1);


Ia boleh dilihat bahawa untuk integer dalam 32 bit (256), JavaScript boleh melakukan operasi bit yang betul, dan hasilnya konsisten dengan hasil operasi bahagi (128). Untuk integer selain daripada 32 bit, JavaScript boleh melakukan operasi bahagi yang betul (1100000000), tetapi hasil yang diperoleh selepas menjalankan operasi bit adalah jauh daripada keputusan yang betul (-1047483648).

Kenyataan:
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