Semua angka dalam JavaScript, apakah bilangan bulat atau desimal, adalah nomor tipe. Di dalam program, esensi dari tipe angka adalah angka floating point 64-bit, yang konsisten dengan jumlah titik mengambang dari tipe ganda di java; Oleh karena itu, semua angka dalam JavaScript adalah angka titik mengambang. Mengikuti standar IEEE 754 (Standar Aritmatika Floating Point), kisaran nilai yang dapat diwakili JavaScript adalah plus atau minus 1,7976931348623157 kali 10 untuk kekuatan 308, dan jumlah desimal minimum yang dapat diwakili ditambah atau minus 10 kali 10 untuk kekuatan minus 324. atribut objek angka masing -masing.
Untuk bilangan bulat, sesuai dengan persyaratan standar ecmascript (http://ecma262-5.com/els5_html.htm#section_8.5), kisaran bilangan bulat yang dapat mewakili dan melakukan operasi aritmetik yang tepat adalah: Kekuatan 53 dari Plus atau Minus 2, itu, itu, itu, itu, itu, itu, kisarannya, itu kisarannya dari kisarannya adalah: Kisarannya adalah: Kisarannya adalah: Kisaran MINIMUMS -MINMET -92 dari PLUS atau MINUS 2. nilai maksimum +9007199254740992; Untuk bilangan bulat yang melebihi kisaran ini, JavaScript masih dapat melakukan operasi, tetapi tidak menjamin keakuratan hasil perhitungan. Perlu dicatat bahwa untuk operasi bit integer (seperti pergeseran dan operasi lainnya), JavaScript hanya mendukung angka integer 32 -bit, yaitu, bilangan bulat dari -2147483648 ke +2147483647.
percobaan
Menampilkan nilai absolut dari angka maksimum dan nilai absolut dari angka desimal minimum di JavaScript:
Salinan kode adalah sebagai berikut:
console.log (number.max_value);
console.log (number.min_value);
Hasilnya adalah 1.7976931348623157e+308 dan 5E-324.
JavaScript tidak dapat memberikan hasil perhitungan yang tepat untuk bilangan bulat di luar kekuatan 53 dari plus atau minus 2:
Salinan kode adalah sebagai berikut:
var a = 9007199254740992;
console.log (a+3);
Hasil perhitungan yang benar harus 9007199254740995, tetapi hasil perhitungan yang diberikan oleh JavaScript adalah 9007199254740996. Setelah mencoba mengubah rumus perhitungan, Anda dapat menemukan bahwa selama penghasilan ini akan lebih besar dari 900719254740992, kesalahan ini akan lebih besar dari 900719254740992, kesalahan. Jika penyimpangan dalam akurasi perhitungan dapat diterima, konsekuensi dari contoh berikut ini akan lebih serius:
Salinan kode adalah sebagai berikut:
var max_int = 9007199254740992;
untuk (var i = max_int; i <max_int +2; ++ i) {
// loop tak terbatas
}
Karena masalah akurasi perhitungan, pernyataan di atas akan jatuh ke loop mati.
Untuk operasi bit, JavaScript hanya mendukung nomor integer 32-bit:
Salinan kode adalah sebagai berikut:
var smallint = 256;
var bigint = 2200000000;
console.log (smallint / 2);
console.log (smallint >> 1);
Console.log (BigInt / 2);
console.log (bigint >> 1);
Dapat dilihat bahwa untuk bilangan bulat dalam 32 bit (256), JavaScript dapat melakukan operasi bit yang benar, dan hasilnya konsisten dengan hasil operasi divisi (128). Untuk bilangan bulat selain 32 bit, JavaScript dapat melakukan operasi divisi yang benar (1100000000), tetapi hasil yang diperoleh setelah melakukan operasi bit jauh dari hasil yang benar (-1047483648).