Angka JavaScript
JavaScript hanya mempunyai satu jenis bilangan.
Boleh mengisi titik desimal atau tidak semasa menulis bilangan.
JavaScript Bilangan
Penulisan nilai JavaScript dapat berupa titik dengan titik, ataupun tanpa titik
实例
var x = 3.14; // Nombor dengan titik var y = 3; // Nombor tanpa titik
Bilangan yang sangat besar atau sangat kecil dapat ditulis dalam bentuk bilangan ilmiah:
实例
var x = 123e5; // 12300000 var y = 123e-5; // 0.00123
Nilai JavaScript selalu adalah bilangan floating-point 64 bit
Beberapa lainnya berbeda dengan banyak bahasa pemrograman lain, JavaScript tidak mendefinisikan tipe bilangan yang berbeda, seperti integer, pendek, panjang, floating-point, dll.
Nilai JavaScript selalu disimpan dalam bilangan floating-point double precision, menurut standar internasional IEEE 754.
Format ini menggunakan 64 bit untuk menyimpan nilai, di mana 0 hingga 51 menyimpan angka (bentuk), 52 hingga 62 menyimpan indeks, dan 63 bit menyimpan simbol:
Nilai (dikenal sebagai Fraksi/Eksponen) | Indeks | Simbol |
---|---|---|
52 bits(0 - 51) | 11 bits (52 - 62) | 1 bit (63) |
Kecerdasan
Bilangan bulat (tanpa ekspresi atau penomoran bilangan ilmiah) akan disesuaikan hingga 15 digit.
实例
var x = 999999999999999; // x akan adalah 999999999999999 var y = 9999999999999999; // y akan adalah 10000000000000000
Bilangan desimal maksimum adalah 17 digit, tetapi aritmetika floating-point tidak selalu 100% akurat:
实例
var x = 0.2 + 0.1; // x akan adalah 0.30000000000000004
Penggunaan perkalian dan pembagian dapat membantu menyelesaikan masalah di atas:
实例
var x = (0.2 * 10 + 0.1 * 10) / 10; // x akan adalah 0.3
Menambahkan nombor dan string
Amaran !!
Penggabungan dan penambahan JavaScript menggunakan operator +.
Nombor digabungkan dengan penambahan. String digabungkan.
Jika anda menambahkan dua nombor, hasilnya akan adalah nombor:
实例
var x = 10; var y = 20; var z = x + y; // z akan adalah 30 (satu nombor)
Jika anda menambahkan dua string, hasilnya akan adalah gabungan string:
实例
var x = "10"; var y = "20"; var z = x + y; // z akan menjadi 1020 (string)
Jika anda menambahkan bilangan dan string, hasilnya adalah gabungan string:
实例
var x = 10; var y = "20"; var z = x + y; // z akan adalah 1020 (satu string)
Jika anda menambah string dan nombor, hasilnya akan menjadi pengecairan string:
实例
var x = "10"; var y = 20; var z = x + y; // z akan menjadi 1020 (string)
Kesalahan umum adalah menganggap hasil seharusnya adalah 30:
实例
var x = 10; var y = 20; var z = "The result is: " + x + y;
Kesalahan umum adalah menganggap hasil seharusnya adalah 102030:
实例
var x = 10; var y = 20; var z = "30"; var result = x + y + z;
JavaScript akan mengompilasi dari kiri ke kanan.
Kerana x dan y adalah nombor, 10 + 20 akan di tambahkan.
Kerana z adalah string, 30 + "30" akan dicacah.
String Nombor
String JavaScript boleh mempunyai kandungan nombor:
var x = 100; // x adalah nombor var y = "100"; // y adalah string
Dalam semua operasi nombor, JavaScript akan cuba untuk mengubah string kepada nombor:
Contoh ini akan berjalan seperti berikut:
var x = "100"; var y = "10"; var z = x / y; // z akan menjadi 10
Contoh ini juga akan berjalan seperti berikut:
var x = "100"; var y = "10"; var z = x * y; // z akan menjadi 1000
Contoh ini akan berjalan seperti berikut:
var x = "100"; var y = "10"; var z = x - y; // z akan menjadi 90
walau bagaimanapun, contoh ini tidak akan berjalan seperti contoh sebelumnya:
var x = "100"; var y = "10"; var z = x + y; // z akan bukan 110 (melainkan 10010)
Dalam contoh terakhir, JavaScript menggunakan operator + untuk pengecairan string.
NaN - Bukan Nombor
NaN
adalah kata kerja reserved JavaScript, menunjukkan angka tersebut bukan nombor sah.
Percubaan bagi fungsian bagi dengan string bukan nombor akan memberikan NaN (Not a Number):
实例
var x = 100 / "Apple"; // x akan menjadi NaN (Not a Number)
walau bagaimanapun, jika string mengandungi angka, hasilnya akan menjadi nombor:
实例
var x = 100 / "10"; // x akan menjadi 10
Anda boleh gunakan fungsi JavaScript global: isNaN()
untuk menentukan nilai apakah nombor:
实例
var x = 100 / "Apple"; isNaN(x); // Pulang kembali true, kerana x bukan nombor
Harap berhati-hati NaN
.Jika anda menggunakan NaN
Jadi hasilnya juga akan menjadi NaN
:
实例
var x = NaN; var y = 5; var z = x + y; // z akan menjadi NaN
Hasilnya mungkin adalah gabungan:
实例
var x = NaN; var y = "5"; var z = x + y; // z akan menjadi NaN5
NaN
Adalah bilangan,typeof NaN
Pulang number
:
实例
typeof NaN; // Pulang "number"
Infinity
Infinity
atau -Infinity
Adalah nilai yang diembalikan oleh JavaScript saat menghitung bilangan melebihi kisaran bilangan yang mungkin.
实例
var myNumber = 2; while (myNumber != Infinity) { // Melaksanakan sehingga Infinity myNumber = myNumber * myNumber; }
Pembagian 0 (nol) juga akan menghasilkan Infinity
:
实例
var x = 2 / 0; // x akan menjadi Infinity var y = -2 / 0; // y akan menjadi -Infinity
Infinity
Bilangan:typeOf Infinity
Pulang number
.
实例
typeof Infinity; // Pulang "number"
heksadesimal
JavaScript akan menggambarkan yang diawali dengan 0x
nilai konstanta diartikan dalam heksadesimal.
实例
var x = 0xFF; // x akan menjadi 255.
Jangan tulis nombor dengan nol awal (seperti 07).
Beberapa versi JavaScript akan menggambarkan bilangan dengan nol awal sebagai oktal.
Secara lalai, Javascript menunjukkan bilangan dalam format desimal.
Tetapi anda boleh gunakan toString()
Method mengeluarkan bilangan dalam format heksadesimal, oktal atau biner.
实例
var myNumber = 128; myNumber.toString(16); // Pulang 80 myNumber.toString(8); // Pulang 200 myNumber.toString(2); // Pulang 10000000
Angka boleh jadi objek
Biasanya angka JavaScript dicipta melalui nilai asal: var x = 123
但是也可以通过关键词 new
定义为对象:var y = new Number(123)
实例
var x = 123; var y = new Number(123); // typeof x 返回 number // typeof y 返回 object
请不要创建数值对象。这样会拖慢执行速度。
new
关键词使代码复杂化,并产生某些无法预料的结果:
当使用 ==
相等运算符时,相等的数看上去相等:
实例
var x = 500; var y = new Number(500); // (x == y) 为 true,因为 x 和 y 有相等的值
当使用 ===
相等运算符后,相等的数变为不相等,因为 ===
运算符需要类型和值同时相等。
实例
var x = 500; var y = new Number(500); // (x === y) 为 false,因为 x 和 y 的类型不同
甚至更糟。对象无法进行对比:
实例
var x = new Number(500); var y = new Number(500); // (x == y) 为 false,因为对象无法比较
JavaScript 对象无法进行比较。