Dalam JavaScript, operasi matematika dapat diimplementasikan melalui dua operasi:
1. +, -, *, /, % dan operator lainnya.
2. Gunakan fungsi perhitungan objek matematika. Misalnya, gunakan Math.pow (2,3) untuk menghitung kekuatan 2 hingga 3.
Tidak seperti Java, operasi matematika di JavaScript tidak melakukan kesalahan. Limpahan hasil perhitungan, dibagi dengan 0, dan angka negatif kuadrat semuanya legal, dan hasilnya adalah nilai khusus dalam javascript: plus atau infinity negatif (infinity), plus atau negatif 0, nan (non-number):
1. Infinity positif dan negatif. Ketika hasil perhitungan lebih besar dari angka maksimum yang dapat diwakili JavaScript (number.max_value), hasilnya adalah infinity positif; Ketika hasil perhitungan lebih kecil dari angka minimum yang dapat diwakili JavaScript (-number.max_value), hasilnya adalah infinity negatif. Operasi matematika seperti +, -, *, dan / terkait dengan Infinity semua mengikuti aturan perhitungan batas dalam matematika lanjut. Hasil 1/0 adalah tak terhingga positif, dan hasil -1/0 adalah infinity negatif.
2. Plus atau minus 0. Ketika hasil perhitungan positif tetapi kurang dari desimal minimum (number.min_value) yang dapat diwakili JavaScript, hasilnya positif 0; Ketika hasil perhitungan negatif tetapi lebih besar dari desimal negatif maksimum (-number.min_value) yang dapat diwakili JavaScript, hasilnya negatif 0. Umumnya, pengembang tidak perlu peduli dengan perbedaan antara plus dan minus 0.
3.Nan. Untuk beberapa hasil perhitungan khusus yang tidak dapat diwakili bahkan dengan infinity positif dan negatif, JavaScript menggunakan NAN untuk mewakili mereka (perlu dicatat bahwa meskipun Nan secara harfiah berarti "non-nomor", jenisnya adalah angka). Perhitungan khusus ini meliputi:
1) .0/0.
2) .infinitas/infinity.
3). Angka negatif persegi.
4). Lakukan operasi konversi numerik pada string non-numerik.
Untuk Infinity dan Nan, keduanya adalah hasil cetak "tak terbatas" dan "non-nomor", dan juga nama variabel global yang mewakili dua nilai khusus ini dalam JavaScript. Faktanya, dalam ecmascript 3, kedua variabel global ini juga dapat diberi nilai lain; Aturan gila ini telah diperbaiki dalam ecmascript 5 untuk membuat dua variabel global ini hanya dibaca. Selain mengakses secara langsung variabel variabel dan variabel NAN, Anda juga dapat menggunakan dua nilai khusus ini dengan mengakses variabel anggota dari objek angka:
1.Infinity setara dengan angka.positive_infinity.
2.-infinity setara dengan angka. Negative_infinity.
3.Nan setara dengan Number.nan.
Dalam JavaScript, NAN adalah nilai khusus yang menarik, yang memiliki properti khusus: tidak sama dengan nilai lainnya (termasuk dirinya sendiri). Ada dua cara untuk menentukan apakah suatu nilai nan:
1. Untuk variabel x, tentukan apakah x! = X benar. Ekspresi ini benar hanya jika x adalah Nan.
2. Untuk variabel x, panggil fungsi global isnan () dalam javascript untuk menentukan apakah isnan (x) benar. Metode ini menentukan bahwa NAN sebenarnya tidak ketat, karena ekspresi isnan (x) benar dalam 4 kasus:
1) .x adalah nan.
2) .x adalah string, dan string bukan angka.
3) .x adalah objek.
4) .x tidak terdefinisi.
Selain isnan (), JavaScript memiliki fungsi global lain yang berguna: isFinite (). Untuk variabel A, isfinite (a) benar dalam kasus berikut:
1). A adalah angka, tetapi tidak nan atau infinity positif dan negatif.
2) .a adalah string, tetapi konten string adalah angka infinity non-Nan, non-positif.
3) .a adalah nol.
4) .a adalah nilai boolean.
Karena tipe non-numerik seperti nol dan tidak ditentukan akan berdampak pada hasilnya, saya pribadi berpikir yang terbaik adalah menilai jenis parameter sebelum menggunakan isnan () atau isfinite ().
percobaan
Salinan kode adalah sebagai berikut:
// Tes Infinity
var a = number.max_value;
Console.log (A*1.1); // Infinity
Console.log (A*-1.1); //-Infinity
Console.log (1/0); // Infinity
Console.log (-1/0); //-Infinity
// tes positif/negatif 0
var b = number.min_value;
console.log (b/2); // 0
Console.log (-B/2); // 0
// Uji nan
Console.log (0/0); // nan
Console.log (Infinity/Infinity); // nan
console.log (math.sqrt (-1)); // nan
console.log (parseInt ("string")); // nan
// Tes Perbandingan Infinity
console.log (infinity === number.positive_infinity); // true
console.log (-infinity === number.negative_infinity); // true
// uji perbandingan nan
console.log (nan === nan); // false
// uji isnan ()
console.log (isnan (nan)); // true
console.log (isnan ("42")); // false
console.log (isnan ("string")); // true
console.log (isnan ({})); // true
console.log (isnan (tidak terdefinisi)); // true
console.log (isnan (null)); // false
// uji isfinite ()
console.log (isfinite (42)); // true
console.log (isfinite (infinity)); // false
console.log (isfinite (nan)); // false
console.log (isfinite ("29")); // true
console.log (isfinite ("string")); // false
console.log (isfinite (null)); // true
console.log (isfinite (tidak terdefinisi)); // false
console.log (isfinite (true))); // true
console.log (isfinite (false))); // true