Konstanta matematika ini merupakan konstanta umum yang digunakan secara internasional, seperti nilai Pi. Dimungkinkan untuk membuat nilai pi dalam bentuk variabel dengan nilai 3,14; . Karena sebenarnya nilai Pi memiliki banyak angka desimal dibelakang koma. Demi akurasi, disediakan beberapa konstanta yang jika dipanggil dengan pernyataan akan menyajikan nilai dengan tingkat akurasi yang hampir sempurna
Konstanta dalam matematika dalam javascript adalah sebagai berikut
- Matematika. E, nilai logaritma natural dari e, dengan nilai 2. 718281828459045
- Matematika. LN10, nilai logaritma natural 10, dengan nilai 2. 302585092994046
- Matematika. LN2, nilai logaritma natural 2, dengan nilai 0. 6931471805599453
- Matematika. LOG10E, nilai logaritma natural basis 10, dengan nilai 0. 4342944819032518
- Matematika. LOG2E, nilai logaritma natural basis 2, dengan nilai 1. 4426950408889634
- Matematika. PI. Berisi nilai pi (π) dengan nilai 3. 141592653589793
- Matematika. SQRT1_2, hasil 1 dibagi akar kuadrat dari 2 (setengah akar 2), dengan nilai 0. 707106781186
- Matematika. SQRT2, Berisi hasil kali akar kuadrat dari 2, dengan nilai 1. 4142135623730951
Dalam menulis fungsi konstan ini, tidak diperlukan argumen. Cukup tulis dalam formulir seperti yang dicetak tebal di atas. Contoh tulisannya adalah sebagai berikut,
var r = 7;
/*Luas Lingkaran */
var Area = Matematika. PI*r*r;
var Lingkar = 2*Matematika. Pi*r;
Fungsi Matematika dalam Javascript
Fungsi Angka, Pembulatan
Matematika. abs(). Fungsi ini untuk mencari nilai mutlak atau absolute value. Dengan kata lain, semua nilai negatif akan dijadikan positif dan nilai positif akan tetap positifMatematika. bulat(). Fungsi ini dimaksudkan untuk melakukan pembulatan sesuai aturan yang kita ketahui. Untuk nilai carry, 5 akan dibulatkan ke bawah dan ke atas atau sama dengan 5 dibulatkan ke atas
Matematika. ceil(). Fungsi ini digunakan untuk pembulatan. Seperti angka 1,23 dibulatkan menjadi 2. Angka 2,98 maka diperoleh angka 3
Matematika. lantai(). Fungsi ini digunakan untuk pembulatan ke bawah. Seperti angka 4,76 dibulatkan menjadi 4. Dan untuk angka 3,02 dibulatkan menjadi 3
Matematika. maks(). Digunakan untuk mencari nilai maksimum. Di dalam tanda kurung akan ada beberapa nilai atau beberapa variabel bilangan yang ingin dicari maksimumnya. Seperti Matematika. maks(a,b,c,d); . Sedangkan untuk mencari nilai minimum atau terkecil dapat digunakan perintah Math. menit()
Matematika. acak(). Digunakan untuk mengambil nilai acak dari angka 0-1. Untuk merubah ke bentuk puluhan misalnya dikalikan saja dengan 100, atau untuk 100-1000 bisa dikalikan dengan 1000 dan seterusnya. Misalnya seperti ini,
Matematika. acak();
100*Matematika. acak() ;
Fungsi trigonometri dalam Javascript
Matematika. acos() / Matematika. garam() / Matematika. Dan(). Fungsi ini digunakan untuk mencari arccosine, arcsine, dan arc tangent dari suatu nilai. Pernyataan dalam kurung () harus antara -1 dan 1 karena seperti dalam matematika nilai trigonometri hanya antara 1 dan -1. Hasil yang diperoleh adalah sudut dalam radianMatematika. sin()/ Matematika. cos /Mat. tan() adalah nilai untuk mencari nilai sinus / nilai cosinus atau nilai tangen suatu sudut. Input sudut yang dimasukkan harus dalam radian Pi. Untuk sudut yang dinyatakan dalam derajat harus diubah menjadi radian dengan cara
var sudut = 60;
derajat var = sudut * 2 * Pi /360;
Fungsi Daya, Logaritma, dan Root dalam Javascript
Matematika. exp(), digunakan untuk menghitung nilai e^x. Nilai x adalah yang dimaksud dalam tanda kurung. Misalnya, e^6 ditulis Matematika. exp(6). e sendiri, logaritma naturalnya adalah 2,718
Matematika. log(), Penggunaan fungsi ini menghitung nilai logaritma natural. Itulah nilai dari log e x. Pernyataan dalam tanda kurung diperlukan
Matematika. pow(), digunakan untuk eksponensial angka. Diperlukan dua pernyataan dalam tanda kurung. Misalkan Anda ingin mencari a pangkat b, maka Matematika akan ditulis. pow(a,b)
Matematika. sqrt(), akar kuadrat, yaitu mencari akar kuadrat dari suatu bilangan. Pernyataan dalam tanda kurung diperlukan. Seperti Matematika. akar(a)
Perhatikan bahwa metode Matematika memiliki keunggulan dibandingkan operator bitwise yang beroperasi pada angka lebih besar dari 2 31
JavaScript menghitung jenis kelamin angka negatif dan sisa angka non-bilangan bulat di sebelah kanan, mengikuti definisi matematis untuk angka tersebut
LANTAI didefinisikan sebagai "bilangan bulat terbesar kurang dari parameter" demikian
- angka positif. FLOOR(X) = bagian bilangan bulat dari X;
- angka negatif. FLOOR(X) = bilangan bulat bagian dari X dikurangi 1 (karena harus LEBIH KECIL dari parameter, yaitu lebih negatif. )
SISA didefinisikan sebagai "sisa" dari suatu divisi (aritmetika Euclidean). Ketika dividen bukan bilangan bulat, faktornya biasanya juga bukan bilangan bulat, yaitu tidak ada sisa, tetapi jika faktor tersebut dipaksa menjadi bilangan bulat (dan inilah yang terjadi ketika seseorang mencoba untuk mendapatkan sisa atau modulo a floating nomor poin), jelas, akan ada non-integer "kiri".
JavaScript menghitung semuanya seperti yang diharapkan, jadi pemrogram harus berhati-hati untuk mengajukan pertanyaan yang tepat (dan orang harus berhati-hati untuk menjawab apa yang ditanyakan. ) Pertanyaan pertama Yarin BUKAN "berapa banyak pembagian bilangan bulat dari X dengan Y", melainkan ini. "Jumlah bilangan bulat dikali bilangan bulat yang diberikan PERGI KE yang lain. " Untuk bilangan positif, jawabannya sama untuk keduanya, tetapi tidak untuk bilangan negatif, karena pembagian bilangan bulat (pembagi dengan pembagi) akan menjadi -1 lebih kecil dari bilangan (pembagi) "bergeser ke yang lain" (pembagi). Dengan kata lain, LANTAI akan mengembalikan jawaban yang benar untuk membagi bilangan bulat dengan bilangan negatif, tetapi Yarin tidak menanyakan itu
gammax menjawab dengan benar, kode ini berfungsi sesuai instruksi Yarin. Di sisi lain, Samuel salah, dia tidak menghitung, saya pikir, atau dia akan melihatnya benar-benar bekerja (juga dia tidak mengatakan apa pembagi dari contoh, tapi saya harap itu 3)
Sisa = X% Y = -100% 3 = -1
Masukkan = (X - Sisa) / Y = (-100 - -1) / 3 = -99 / 3 = -33
Omong-omong, saya menguji kode di Firefox 27. 0. 1, berfungsi seperti yang diharapkan dengan angka positif dan negatif, serta nilai non-bilangan bulat, untuk pembagi dan pembagi. Contoh
100,34 / 3,57. Masuk ke = -28, Sisa = -0,3800000000000079
Ya, saya melihat ada masalah dengan akurasi tinggi, tetapi saya tidak punya waktu untuk memeriksanya (saya tidak tahu apakah masalahnya ada pada Firefox, Windows 7, atau pada FPU prosesor saya). Namun, untuk kueri Yarin, yang hanya menyertakan bilangan bulat, kode gammax berfungsi dengan baik
Anda dapat menggunakan fungsi parseInt untuk mendapatkan hasil terpotong
ParseInt(a/b)
Untuk mendapatkan sisanya, gunakan operator mode
parseInt memiliki beberapa jebakan dengan string yang harus dihindari menggunakan parameter radix basis 10
ParseInt("09", 10)
Dalam beberapa kasus, representasi string dari angka bisa dalam notasi ilmiah, dalam hal ini parseInt akan menghasilkan hasil yang salah
ParseInt(100000000000000000000000000000000, 10) // 1e+32
Panggilan ini akan mengembalikan 1
Menghitung jumlah halaman dapat dilakukan dalam satu langkah. Matematika. langit-langit (x/y)
Jika Anda hanya membagi dengan pangkat dua, Anda dapat menggunakan operator bitwise
Ekspor fungsi bagibagiBy2(num) ( return ; ) ekspor fungsi bagibagi4(num) ( return ; ) ekspor fungsi bagibagiBy8(num) ( return ; )
(Yang pertama adalah yang spesifik, yang kedua adalah yang lainnya)
Ini akan selalu terpotong menuju nol. Tidak yakin apakah sudah terlambat, tapi ini tertulis
Fungsi intdiv(pembagi, pembagi) ( pembagi = pembagi - pembagi % 1; if (pembagi == 0) throw new Error("pembagi dengan nol"); dividend = pembagi - pembagi % 1; var rem = pembagi % pembagi; return (sisa. rem, hasil bagi. (dividen - rem) / pembagi );
Saya bukan ahli operator bitwise, tapi inilah cara lain untuk mendapatkan bilangan bulat
Varnum = ~~(a / b);
Ini akan bekerja dengan baik untuk angka negatif juga, sementara Matematika. floor() akan berputar ke arah yang salah
Ini juga tampaknya benar
Varnum = (a/b) >> 0;
Matematika. floor(operation) mengembalikan nilai operasi yang dibulatkan
Contoh 1 soal
Varx = 5; . lantai(x + y);
Menghibur
Contoh 2 soal
Varx = 14; . lantai(x%y);
Menghibur
Untuk beberapa angka y dan beberapa pembagi x, hitung hasil bagi dan sisa (sisa) sebagai
Hasil untuk var = Matematika. lantai (y/x);
Sangat sering, perhitungan dalam JavaScript tidak memberikan hasil yang kita inginkan. Tentu saja, kita dapat melakukan apa saja dengan angka - membulatkan ke atas atau ke bawah, menyesuaikan rentang, memotong angka yang tidak perlu ke angka desimal tertentu, semuanya tergantung pada apa yang ingin Anda lakukan dengan angka-angka ini di masa mendatangMengapa pembulatan diperlukan?
Salah satu aspek aneh dari JavaScript adalah tidak menyimpan bilangan bulat, kami bekerja langsung dengan angka floating point. Ini, dikombinasikan dengan fakta bahwa banyak nilai pecahan tidak dapat dinyatakan dengan jumlah desimal yang terbatas, dalam JavaScript kita bisa mendapatkan hasil seperti ini0. 1 * 0. 2; . 0200000000000000004 0. 3 - 0. 1 > 0. 199999999999999998
Untuk tujuan praktis, ketidakakuratan ini tidak menjadi masalah, dalam kasus kami, kami berbicara tentang kesalahan dalam triliunan saham, namun ini mungkin mengecewakan seseorang. Kami juga bisa mendapatkan beberapa hasil aneh saat bekerja dengan angka yang mewakili mata uang, persentase, atau ukuran file. Untuk memperbaiki ketidakakuratan ini, kita hanya perlu membulatkan hasilnya, dan itu cukup untuk mengatur presisi desimal
Pembulatan angka memiliki kegunaan praktis, kita dapat memanipulasi angka dalam rentang tertentu, misalnya kita ingin membulatkan nilai ke bilangan bulat terdekat daripada bekerja hanya dengan bagian desimal
Pembulatan desimal
Untuk memangkas angka desimal, gunakan metode toFixed atau toPrecision. Keduanya mengambil satu argumen, yang menentukan, masing-masing, berapa banyak digit signifikan (yaitu jumlah digit yang digunakan dalam angka) atau tempat desimal (angka setelah titik desimal) yang harus disertakan hasilnya- Jika argumen tidak ditentukan untuk toFixed(), defaultnya adalah nol, yang berarti 0 tempat desimal, argumen memiliki nilai maksimum 20
- Jika tidak ada argumen yang diberikan untuk Presisi, nomor tersebut tidak akan disentuh
Baik metode toFixed() dan toPrecision() mengembalikan representasi string dari hasil, bukan angka. Ini berarti bahwa saat menjumlahkan nilai yang dibulatkan dengan randNum , string akan digabungkan, bukan angka yang ditambahkan
Misalkan randNum = 6,25; . toFixed(); . log(bilangan+bulat); . 256"
Jika Anda ingin hasilnya berupa tipe data numerik, maka Anda perlu menggunakan parseFloat
Misalkan randNum = 6,25; . keTetap(1)); . 3
Perhatikan bahwa 5 nilai dibulatkan kecuali dalam kasus yang jarang terjadi
Metode toFixed() dan toPrecision() berguna, karena tidak hanya dapat memotong bagian pecahan, tetapi juga mengisi tempat desimal, yang nyaman saat bekerja dengan mata uang
Misalkan wholeNum = 1 biarkan dollarCents = wholeNum. keTetap(2); . log(sen dolar); . 00"
Perhatikan bahwa toPrecision akan mengembalikan hasil dalam notasi eksponensial jika jumlah bilangan bulat lebih besar dari presisi itu sendiri
Misalkan bilangan = 123. 435 nomor. toPrecision(2); . 2e+2"
Cara Menghindari Kesalahan Pembulatan dengan Desimal
Dalam beberapa kasus, toFixed dan toPrecision akan membulatkan nilai 5 ke bawah dan ke atasBiarkan numTest = 1.005; . keTetap(2); . 00"
Hasil perhitungan di atas seharusnya 1,01, bukan 1. Jika Anda ingin menghindari kesalahan semacam ini, kita dapat menggunakan solusi yang disarankan oleh Jack L Moore, yang menggunakan bilangan eksponensial untuk perhitungannya.
fungsi rotate(nilai, desimal) ( return Number(Math. bulat(nilai+"e"+desimal)+"e-"+desimal);
Sekarang
Ronde 1. 005,2); . 01
Jika Anda menginginkan solusi yang lebih kuat daripada yang ditunjukkan di atas, Anda dapat mengunjungi MDN
Pembulatan epsilon mesin
Metode alternatif untuk membulatkan angka desimal diperkenalkan di ES6. Pembulatan epsilon mesin memberikan margin kesalahan yang wajar saat membandingkan dua angka floating point. Tanpa pembulatan, perbandingan dapat menghasilkan hasil yang serupa dengan berikut ini0,1 + 0,2 === 0,3 > salah
Kami menggunakan Matematika. EPSILON dalam fungsi kami untuk mendapatkan perbandingan yang benar
Fungsi epsEqu(x, y) ( mengembalikan Math. abs(x - y)< Angka. EPSILON * Matematika. maks(Matematika. abs(x), Matematika. abs(y));
Fungsi mengambil dua argumen. yang pertama adalah perhitungan saat ini, yang kedua adalah hasil yang diharapkan. Ini mengembalikan perbandingan keduanya
EpsEqu(0. 1 + 0. 2, 0. 3) > benar
Semua browser modern sudah mendukung fungsi matematika ES6, tetapi jika Anda menginginkan dukungan di browser seperti IE 11, gunakan polyfill
Kliping pecahan
Semua metode yang disajikan di atas dapat dibulatkan menjadi angka desimal. Untuk memotong angka menjadi dua tempat desimal, Anda harus mengalikannya dengan 100 terlebih dahulu, lalu membagi hasilnya dengan 100Fungsi terpotong(angka) ( kembali Math. terpotong(angka * 100) / 100; . 1416) > 3. 14
Jika Anda ingin mengadaptasi metode ini ke sejumlah tempat desimal, Anda dapat menggunakan negasi ganda bitwise
Fungsi terpotong(num, decimalPlaces) ( biarkan numPowerConverter = Math. pow(10, Tempat desimal);
Sekarang
Misalkan randInt = 35. 874993;
Pembulatan ke bilangan terdekat
Untuk membulatkan angka desimal ke atas atau ke bawah ke angka terdekat, tergantung angka terdekat kita, gunakan Matematika. bulat()Matematika. bulat (4. 3) > 4 Matematika. bulat (4. 5) > 5
Perhatikan bahwa "nilai setengah", 0,5 dibulatkan oleh aturan matematika
Pembulatan ke bawah ke bilangan bulat terdekat
Jika Anda ingin selalu membulatkan ke bawah, gunakan Matematika. lantaiMatematika. lantai (42. 23); . lantai (36. 93);
Perhatikan bahwa pembulatan ke bawah berfungsi untuk semua angka, termasuk angka negatif. Bayangkan gedung pencakar langit dengan jumlah lantai tak terhingga, termasuk lantai bawah (mewakili angka negatif). Jika Anda berada di lift di lantai dasar antara 2 dan 3 (yang nilainya -2,5), Math. lantai akan membawa Anda ke -3
Matematika. lantai (-2. 5);
Tetapi jika Anda ingin menghindari situasi seperti ini, gunakan Matematika. trunc , yang didukung di semua browser modern (kecuali IE/Edge)
Matematika. terpotong(-41. 43);
Di MDN Anda akan menemukan polyfill yang akan memberikan dukungan untuk Matematika. trunc di browser dan IE/Edge
Pembulatan ke bilangan bulat terdekat
Sebaliknya, jika Anda harus selalu membulatkan, gunakan Matematika. langit-langit. Sekali lagi, ingat lift tanpa batas. Matematika. ceil akan selalu "naik", apakah angkanya negatif atau tidakMatematika. langit-langit (42. 23); . langit-langit (36. 93); . langit-langit (-36. 93);
Bulatkan ke atas/bawah sesuai kebutuhan
Jika kita ingin membulatkan ke kelipatan 5 terdekat, cara termudah adalah membuat fungsi yang membagi angka dengan 5, membulatkannya, lalu mengalikannya dengan angka yang samaFungsi roundTo5(num) ( kembali Math. bulat(angka/5)*5;
Sekarang
Putaran5(11);
Jika Anda ingin membulatkan ke kelipatan nilai Anda, kami menggunakan fungsi yang lebih umum, meneruskan nilai awal dan kelipatannya
Fungsi roundToMultiple(num, multiple) ( mengembalikan Math. bulat(bil/kelipatan)*kelipatan;
Sekarang
Misalkan bilangan awal = 11;
Nomor tetap dalam jangkauan
Ada banyak kasus dimana kita ingin mendapatkan nilai x yang berada di dalam range. Misalnya, kita mungkin menginginkan nilai dari 1 sampai 100, tetapi kita berakhir dengan nilai 123. Untuk memperbaikinya, kita dapat menggunakan min (mengembalikan kelompok angka terkecil) dan maks (mengembalikan kelompok angka terbesar). Dalam contoh kita, rentangnya adalah dari 1 hingga 100Biarkan lowBound = 1; . maks(Batas Rendah, Matematika. min(numInput, HighBound));
Sekali lagi, kita dapat menggunakan kembali operasi dan menggabungkan semuanya dalam suatu fungsi, menggunakan solusi yang disarankan oleh Daniel X. Moore
Nomor. prototipe. clamp = function(min, max) ( return Math. berarti (Matematika. maks(ini, min), maks);
Sekarang
NumInput. penjepit (Batas rendah, Batas tinggi);
Pembulatan Gauss
Pembulatan Gaussian, juga dikenal sebagai pembulatan bankir, adalah pembulatan untuk kasus ini ke bilangan genap terdekat. Metode pembulatan ini berfungsi tanpa kesalahan statistik. Solusi terbaik disarankan oleh Tim DownFungsi gaussRound(num, Tempat desimal) (misalkan d = Tempat desimal. 0, m = Matematika. pow(10, d), n = +(d ? num * m. nomor). toFixed(8), i = Matematika. lantai (n), f = n - i, e = 1e-8, r = (f > 0,5 - e && f< 0. 5 + e) ? . saya + 1). Matematika. putaran (n); . R;
Sekarang
GaussRound(2. 5) > 2 gaussRound(3. 5) > 4 gaussRound(2. 57,1) > 2. 6
Titik desimal dalam CSS
Karena JavaScript sering digunakan untuk membuat transformasi posisi untuk elemen HTML, Anda mungkin bertanya-tanya apa yang terjadi jika kita membuat nilai desimal untuk elemen kita
#kotak ( lebar. 63. 667731993px;
Kabar baiknya adalah browser modern akan menghargai nilai desimal dalam model kotak, termasuk persentase atau satuan piksel
Penyortiran
Sangat sering kita perlu mengurutkan beberapa elemen, misalnya, kita memiliki larik catatan permainan, sementara itu harus diatur dalam urutan level pemain. Sayangnya, metode sort() standar memiliki beberapa keterbatasan yang mengejutkan. itu bekerja dengan baik dengan kata-kata bahasa Inggris yang umum, tetapi dengan cepat rusak ketika menemukan angka, karakter unik, atau kata-kata kapitalUrutkan berdasarkan abjad
Tampaknya mengurutkan array menurut abjad seharusnya menjadi tugas yang paling sederhanabiarkan buah = ["butternut squash", "apricot", "melon"];
Namun, kami mengalami masalah segera setelah salah satu elemen dalam huruf besar
biarkan buah = ["butternut squash", "apricot", "Cantalope"];
Ini karena, secara default, penyortir membandingkan karakter pertama yang direpresentasikan dalam Unicode. Unicode adalah kode unik untuk karakter apa pun, apa pun platformnya, apa pun programnya, apa pun bahasanya. Misalnya, saat melihat tabel kode, karakter "a" memiliki nilai U+0061 (heksadesimal 0x61), sedangkan karakter "C" memiliki kode U+0043 (0x43), yang muncul sebelum karakter di Unicode meja. "A"
Untuk mengurutkan array yang mungkin berisi campuran huruf pertama, kita perlu mengubah sementara semua elemen menjadi huruf kecil, atau menentukan tata urutan kita sendiri menggunakan metode localeCompare() dengan beberapa argumen. Biasanya, untuk kasus seperti itu, lebih baik segera membuat fungsi untuk penggunaan ganda
Fungsi alphaSort(arr) ( arr. sortir(fungsi (a, b) ( mengembalikan a. localeCompare(b, "en", ("sensitivitas". "basis"));
Jika Anda ingin mengurutkan array dalam urutan abjad terbalik, ubah saja posisi a dan b dalam fungsi tersebut
Fungsi alphaSort(arr) ( arr. sortir(fungsi (a, b) ( mengembalikan b. localeCompare(a, "en", ("sensitivitas". "basis"));
Di sini perlu dicatat bahwa localeCompare digunakan dengan argumen, kita juga perlu ingat bahwa ini didukung oleh IE11+, untuk versi IE yang lebih lama, kita dapat menggunakannya tanpa argumen, dan dalam huruf kecil
Fungsi caseSort(arr) ( arr. sortir(fungsi (a, b) ( mengembalikan a. ke Huruf Kecil(). perbandingan lokal(b. toLowerCase());
Urutkan secara numerik
Semua ini tidak berlaku untuk contoh yang kita bicarakan di atas tentang catatan rekor permainan. Dengan beberapa larik numerik, pengurutan berfungsi dengan baik, tetapi pada titik tertentu hasilnya tidak dapat diprediksiBiarkan skor tinggi = ;
Faktanya adalah bahwa metode sort() melakukan perbandingan leksikografis. yang berarti angka tersebut akan diubah menjadi string dan perbandingan akan dilakukan lagi dengan mencocokkan karakter pertama dari string ini dalam urutan karakter tabel Unicode. Oleh karena itu, sekali lagi kita perlu menentukan urutan sortir kita
Biarkan skor tinggi = ; . sort(fungsi(a,b) ( kembali a - b; ));
Sekali lagi, untuk mengurutkan angka dalam urutan terbalik, tukar posisi a dan b dalam fungsi
Mengurutkan struktur mirip JSON
Dan terakhir, jika kita memiliki struktur data seperti JSON yang direpresentasikan sebagai larik rekaman gameBiarkan skor = [( "nama". "Daniel", "skor". 21768 ), ( "nama". "Michael", "skor". 33579 ), ( "nama". "Alison", "skor". 38395 )]);
Di ES6+, Anda dapat menggunakan fungsi panah
Skor. urutkan((a, b) => b. skor - a. skor));
Untuk browser lama yang tidak memiliki dukungan ini
Skor. sortir(fungsi(a, b) ( mengembalikan a. skor - b. skor ));
Seperti yang Anda lihat, menyortir dalam JavaScript agak tidak jelas, saya harap contoh-contoh ini membuat hidup lebih mudah
Bekerja dengan Fungsi Daya
Eksponen adalah operasi yang awalnya didefinisikan sebagai hasil perkalian bilangan asli dengan dirinya sendiri, akar kuadrat dari a adalah bilangan yang menghasilkan a jika dikuadratkan. Fungsi tersebut dapat kita gunakan secara terus-menerus dalam kehidupan sehari-hari dalam pelajaran matematika, termasuk saat menghitung luas, volume, atau bahkan dalam pemodelan fisikDalam JavaScript, fungsi eksponensial direpresentasikan sebagai Matematika. pow(), dalam standar ES7 baru, operator eksponensial baru diperkenalkan - " * * "
Eksponen
Untuk menaikkan angka ke pangkat n, gunakan fungsi Math. pow(), di mana argumen pertama adalah angka yang akan dimunculkan, dan argumen kedua adalah eksponenMatematika. pow(3,2) > 9
Notasi ini berarti 3 kuadrat, atau 3 × 3, menghasilkan 9. Contoh lain tentu saja bisa diberikan
Matematika. pow(5,3);
Artinya, 5 pangkat tiga, atau 5 × 5 × 5, sama dengan 125
ECMAScript 7 adalah versi berikutnya dari JavaScript, pada prinsipnya, kita dapat menggunakan operator eksponensial baru yang diusulkan - * *, bentuk penulisan ini dapat lebih deskriptif
3 ** 2 > 9
Saat ini dukungan untuk operator ini cukup terbatas, sehingga tidak disarankan untuk menggunakannya
Fungsi daya dapat berguna dalam berbagai situasi. Contoh sederhana, menghitung jumlah detik dalam satu jam. Matematika. pow(60,2)
Matematika. sqrt() dan Matematika. cbrt() adalah kebalikan dari Matematika. pow(). Seperti yang kita ingat, akar kuadrat dari a adalah bilangan yang menghasilkan a jika dikuadratkanMatematika. sqrt(9) > 3
Pada saat yang sama, akar pangkat tiga dari a adalah bilangan yang menghasilkan a ketika pangkat tiga
Matematika. cbrt(125) > 5
Matematika. cbrt() diperkenalkan ke dalam spesifikasi JavaScript baru-baru ini dan karena itu hanya didukung di browser modern. Chrome 38+, Firefox dan Opera 25+ dan Safari 7. 1+. Anda akan melihat bahwa Internet Explorer tidak ada dalam daftar ini, tetapi Anda akan menemukan polyfill di MDN
Contoh
Tentu saja, kita juga bisa menggunakan nilai bukan bilangan bulat di salah satu fungsi tersebutMatematika. pow(1,25, 2); . 5625 Matematika. cbrt (56. 57) > 3. 8387991760286138
Perhatikan bahwa ini berfungsi dengan baik saat menggunakan nilai argumen negatif
Math. pow(-5,2) > 25 Matematika. pow(10,-2) > 0,01
Namun, untuk akar kuadrat cara ini tidak akan berhasil
Math. sqrt(-9) > NaN
Dari analisis matematis, kita tahu bahwa bilangan imajiner dipahami sebagai akar kuadrat dari bilangan negatif. Dan itu mungkin membawa kita ke teknik bilangan kompleks lainnya, tapi itu cerita lain
Anda dapat menggunakan nilai pecahan di Math. pow() untuk menemukan akar kuadrat dan pangkat tiga dari angka. Akar kuadrat menggunakan eksponen 0,5
Math. pow(5, 0. 5); // = Math. sqrt(5) = 5 ** (1/2) > 2. 23606797749979
Namun, karena keanehan floating point, Anda tidak dapat menebak dengan tepat hasil yang benar
Math. pow(2. 23606797749979. 2) > 5. 000000000000001
Dalam situasi seperti itu, Anda harus menggunakan pemotongan tanda dari angka atau pembulatan ke beberapa nilai
Beberapa, entah kenapa dalam JavaScript, mengacaukan fungsi Math. pow() dengan Math. exp() , yang merupakan fungsi eksponensial untuk angka secara umum. Catatan. dalam bahasa Inggris, "eksponen" diterjemahkan sebagai "eksponen", jadi ini lebih relevan untuk penutur bahasa Inggris, meskipun ada nama alternatif untuk eksponen, seperti indeks, pangkat
Konstanta matematika
Bekerja dengan matematika dalam JavaScript menjadi lebih mudah dengan sejumlah konstanta bawaan. Konstanta ini adalah properti dari objek Math. Perlu dicatat bahwa konstanta ditulis dalam huruf besar, bukan notasi CamelCaseMath. abs, parseInt, parseFloat
Bekerja dengan angka dalam JavaScript bisa jauh lebih rumit daripada yang Anda pikirkan. Nilai yang diperoleh tidak selalu berada dalam rentang yang diharapkan, terkadang hasilnya mungkin tidak seperti yang kita harapkan sama sekalimatematika. ab()
Metode Math. abs() mengembalikan nilai absolut suatu bilangan, yang mengingatkan kita pada fungsi modulo matematika analogBiarkan newVal = -57. 64; Math. abs(newVal); > 57. 64
Math. abs(0) selalu mengembalikan nol, tetapi jika kita meletakkan tanda minus di depan fungsi -Math. abs(NUM), kita akan selalu memiliki nilai negatif
matematika. abs(0); > -0
parseInt()
Kita tahu bahwa JavaScript memahami bahwa "15" adalah string, bukan angka, dan, misalnya, saat mengurai properti CSS menggunakan JavaScript, atau mendapatkan beberapa nilai dari array yang tidak disiapkan, hasil kita bisa menjadi tidak terduga. Kita bisa mendapatkan string yang direpresentasikan sebagai "17px" sebagai input, dan ini tidak biasa bagi kita. Pertanyaannya adalah bagaimana mengubah string ini menjadi nilai aktual dan menggunakannya dalam perhitungan lebih lanjutSintaks. parseInt(string, radix);
Fungsi parseInt mengonversi argumen pertama yang diteruskan ke tipe string, menafsirkannya, dan mengembalikan nilai integer atau NaN. Hasilnya (jika bukan NaN) adalah bilangan bulat dan merupakan argumen (string) pertama yang diperlakukan sebagai angka dalam sistem angka yang ditentukan (radix). Misalnya, basis 10 menunjukkan konversi dari desimal, 8 dari oktal, 16 dari heksadesimal, dan seterusnya. Jika basis lebih besar dari 10, maka huruf digunakan untuk menunjukkan angka yang lebih besar dari 9. Misalnya, bilangan heksadesimal (basis 16) menggunakan huruf A sampai F
Pertimbangkan contoh bekerja dengan properti CSS, di mana, secara relatif, kita bisa mendapatkan nilai berikut
Biarkan elem = document. body; biarkan centerPoint = window. getComputedStyle(elem). transformOrigin; . 19px"
Kami dapat memisahkan nilai dengan spasi
Biarkan pusat = centerPoint. split(" "); > ["454px", "2087. 19px"]
Namun, setiap elemen masih berupa string, kita dapat menghilangkannya dengan menggunakan fungsi kita
Biarkan centerX = parseInt(pusat, 10); > 454 biarkan centerY = parseInt(centers, 10); > 2087
Seperti yang Anda lihat, sebagai argumen kedua, kami menentukan sistem bilangan yang akan diubah nomornya, parameter ini opsional, tetapi disarankan untuk menggunakannya jika Anda tidak tahu string mana yang akan dimasukkan
parseFloat()
Dari contoh di atas, Anda mungkin telah memperhatikan bahwa parseInt membuang bagian pecahan. Dalam kasus kami, parseFloat dapat bekerja dengan angka floating point. Sekali lagi, ini dapat berguna dalam penguraian CSS dan tugas-tugas lainnya, terutama ketika berhadapan dengan persentase floating pointSintaks. parseFloat(string)
LetFP = "33,33333%"; console. log(parseFloat(FP)); > 33. 33333
Perhatikan bahwa tidak ada argumen kedua dalam sintaks parseFloat
Kami memahami bahwa parseInt() dan parseFloat() adalah fungsi yang sangat berguna, penting untuk diingat bahwa ada beberapa kesalahan di sini, jadi Anda perlu memeriksa rentang nilai yang diharapkan dan akhirnya menguraikan hasilnya untuk memastikan bahwa nilai diperoleh sudah benar
Kirim secara anonim
Seringkali perhitungan memberikan hasil yang tidak sesuai dengan rentang yang diinginkan. Akibatnya, perlu untuk Pembulatan JavaScript sampai nilai tertentu
Mengapa angka bulat?
JavaScript tidak menyimpan bilangan bulat karena nilainya direpresentasikan sebagai angka floating point. Banyak pecahan tidak dapat diwakili oleh angka dengan jumlah tempat desimal tertentu yang terbatas, sehingga JavaScript dapat menghasilkan hasil seperti berikut
0. 1 * 0. 2; > 0. 020000000000000004
Dalam praktiknya, ini tidak masalah, karena kita berbicara tentang kesalahan 2 triliun. Tapi ini bisa mempengaruhi hasil saat bekerja dengan angka yang mewakili nilai mata uang, persentase, atau ukuran file. Oleh karena itu, Anda perlu melakukan atau hingga tempat desimal tertentu
Pembulatan desimal
Untuk "memotong" angka desimal, gunakan metode toFixed() atau toPrecision(). Mereka berdua mengambil satu argumen, yang menentukan jumlah tempat signifikan dan desimal untuk disertakan dalam hasil
- jika tidak ada argumen yang ditentukan untuk toFixed() , nilai defaultnya adalah 0 , yaitu, tidak ada tempat desimal; nilai maksimum argumen adalah 20 ;
- jika tidak ada argumen yang diberikan ke toPrecision(), nomornya tidak berubah
var randNum = 6,25; randNum. toFixed(); > "6" Math. PI. toPrecision(1); > "3" var randNum = 87. 335; randNum. toFixed(2); > "87,33" var randNum = 87. 337; randNum. toPrecision(3); > "87. 3"
Catatan
Baik toFixed() dan toPrecision mengembalikan representasi string bulat dari hasil, bukan angka. Ini berarti bahwa menambahkan pembulatan ke randNum akan menghasilkan rangkaian string daripada satu angka
console. log(randNum + bulat); > "6. 256"
Jika Anda ingin JavaScript dibulatkan ke ratusan, gunakan parseFloat()
var randNum = 6,25; var dibulatkan = parseFloat(randNum. toFixed(1)); log konsol (dibulatkan); > 6. 3
toFixed() dan toPrecision() juga merupakan metode yang berguna untuk memotong sejumlah besar tempat desimal. Ini berguna saat bekerja dengan angka yang mewakili satuan moneter
var wholeNum = 1 var dollarCents = wholeNum. keTetap(2); . log(sen dolar); . 00"
Perhatikan bahwa jika angka memiliki lebih banyak digit daripada parameter presisi, toPrecision akan mengembalikan hasilnya dalam format ilmiah
var bil = 123. 435 nomor. toPrecision(2); . 2e+2"
Cara Menghindari Kesalahan Saat Membulatkan Desimal
Dalam beberapa kasus, toFixed dan toPrecision melakukan rotasi JavaScript 5 ke bawah, dan tidak lebih
var numTest = 1,005; numTest. keTetap(2);
Hasil dari contoh di atas seharusnya 1,01, bukan 1. Jika Anda ingin menghindari kesalahan ini, saya sarankan menggunakan bilangan eksponensial
fungsi bulat(nilai, desimal) ( mengembalikan Angka(Matematika. bulat(nilai+"e"+desimal)+"e-"+desimal);
Aplikasi
bulat(1. 005,2); > 1. 01
Jika Anda membutuhkan solusi yang lebih kuat daripada pembulatan, tersedia di MDN
Pembulatan dengan Epsilon
Metode alternatif Pembulatan JavaScript ke persepuluh diperkenalkan di ES6 ( juga dikenal sebagai JavaScript 2015). « Mesin epsilon' memberikan margin kesalahan yang wajar saat membandingkan dua angka floating point. Tanpa pembulatan, perbandingan dapat menghasilkan hasil yang serupa dengan berikut
0,1 + 0,2 === 0,3 > salah
Math. EPSILON dapat digunakan dalam suatu fungsi untuk mendapatkan perbandingan yang valid
fungsi epsEqu(x, y) ( kembalikan Math. abs(x - y)< Number. EPSILON * Math. max(Math. abs(x), Math. abs(y)); }
Fungsi membutuhkan dua argumen. satu berisi perhitungan, yang kedua adalah hasil yang diharapkan (dibulatkan). Ini mengembalikan perbandingan dua parameter ini
epsEqu(0. 1 + 0. 2, 0. 3) > benar
Semua browser modern mendukung fungsi matematika ES6. Tetapi jika Anda perlu memberikan dukungan di browser lama, maka Anda perlu menggunakan polyfill
Pemotongan desimal
Semua metode yang disajikan sebelumnya tampil Pembulatan JavaScript ke persepuluh. Untuk memotong angka positif menjadi dua tempat desimal, kalikan dengan 100 , potong lagi, lalu bagi hasilnya dengan 100
function truncated(num) ( return Math. trunc(num * 100) / 100; ) truncated(3. 1416) > 3. 14
Jika Anda membutuhkan sesuatu yang lebih fleksibel, Anda dapat menggunakan operator bitwise
function truncated(num, decimalPlaces) ( var numPowerConverter = Math. pow(10, decimalPlaces); return ~~(num * numPowerConverter)/numPowerConverter; )
Penggunaan
var randInt = 35. 874993; terpotong(randInt,3); > 35,874
Pembulatan ke bilangan terdekat
Untuk melaksanakan JavaScript bulat ke bilangan bulat, Math. round() digunakan
Matematika. bulat (4. 3) > 4 Matematika. bulat (4. 5) > 5
Perhatikan bahwa " setengah nilai“, seperti . 5 , dibulatkan ke atas
Pembulatan ke bawah ke bilangan bulat terdekat
Jika Anda ingin membulatkan ke bawah, gunakan metode Math. floor()
Matematika. lantai (42. 23); . lantai (36. 93);
Pembulatan "bawah" memiliki satu arah untuk semua angka, termasuk angka negatif. Ini dapat dibayangkan sebagai gedung pencakar langit dengan jumlah lantai yang tidak terbatas, termasuk di bawah tingkat pondasi ( mewakili bilangan negatif). Jika Anda berada di lift antara lantai bawah tanah 2 dan 3 ( yang sesuai dengan nilai -2,5), Math. floor akan membawa Anda ke lantai -3
Matematika. lantai (-2. 5);
Jika Anda perlu menghindari ini, gunakan pembulatan Matematika JavaScript dengan Math. trunc() , yang didukung di semua browser modern (kecuali IE/Tepi)
Matematika. terpotong(-41. 43);
MDN juga menyediakan Polyfill 3-baris untuk memberikan dukungan untuk Math. trunc di browser lama dan IE/Edge
Pembulatan ke bilangan bulat terdekat
Jika Anda ingin membulatkan angka desimal, gunakan Math. ceil . Anda juga dapat menganggap metode ini sebagai elevator tak terbatas. Math. ceil selalu membawa Anda "naik", terlepas dari apakah angkanya negatif atau positif
Math. ceil(42. 23); > 43 Math. ceil(36. 93); > 37 Math. ceil(-36. 93); -36
Pembulatan ke kelipatan terdekat
Jika Anda ingin membulatkan nilai ke kelipatan terdekat dari 5 , buat fungsi yang membagi angka dengan 5 , bulatkan ke atas, lalu kalikan hasilnya dengan nilai yang sama
function roundTo5(num) ( kembalikan Math. round(num/5)*5; )
Penggunaan
putaranKe5(11); > 10
Jika Anda perlu melakukan pembulatan JavaScript ke dua tempat desimal, Anda dapat meneruskan benih dan multiplisitas ke fungsi
function roundToMultiple(num, multiple) ( return Math. round(num/multiple)*multiple; )
Untuk menggunakan fungsi tersebut, sertakan nomor yang akan dibulatkan dan multiplisitas dalam panggilannya
var bilangan awal = 11;
Untuk membulatkan nilai hanya ke atas atau ke bawah, ganti fungsi round dengan ceil atau floor
Mengikat ke rentang
Terkadang Anda perlu mendapatkan nilai x, yang harus berada dalam kisaran tertentu. Misalnya, kami menginginkan nilai antara 1 dan 100 , tetapi kami mendapatkan nilai 123 . Untuk memperbaikinya, Anda dapat menggunakan min() ( mengembalikan yang terkecil dari angka) dan maks( mengembalikan jumlah maksimum yang diizinkan)
Penggunaan
var batas rendah = 1; varhighBound = 100; masukan varnum = 123; var dijepit = Math. max(lowBound, Math. min(numInput, highBound)); log konsol (dijepit); > 100;
Anda dapat membuat fungsi atau ekstensi dari kelas Number
Pada artikel ini, kita akan melihat lebih dekat pada angka, operator matematika, cara mengubah angka menjadi string dan sebaliknya, serta banyak poin penting lainnya
fungsi terbatas
Fungsi isFinite memungkinkan Anda untuk memeriksa apakah suatu argumen adalah bilangan berhingga
Fungsi ini mengembalikan false sebagai respons jika argumennya adalah Infinity , -Infinity , NaN , atau akan dilemparkan ke salah satu dari nilai numerik khusus ini. Jika tidak, fungsi ini akan mengembalikan true
Terbatas(73); // true isFinite(-1/0); // false isFinite(Tak terhingga); // false isFinite(NaN); // false isFinite("Teks"); // Salah
Selain fungsi global isFinite, JavaScript juga memiliki metode Number. isFinite. Itu, tidak seperti isFinite, tidak memaksa argumen untuk dikonversi ke angka
IsFinite("73"); // true Number. isFinite("73"); // Salah
fungsi isNaN
Fungsi isNaN adalah untuk menentukan apakah suatu argumen adalah angka atau dapat dikonversi menjadi satu. Jika demikian, maka fungsi isNaN mengembalikan false. Kalau tidak, itu mengembalikan true
IsNaN(NaN); //true isNaN("25px"); //benar, karena 20px bukan angka isNaN(25. 5); //false isNaN("25. 5"); //salah isNaN(" "); //salah, karena spasi atau beberapa spasi diubah menjadi 0 isNaN(null); //salah, karena nilai null dikonversi menjadi 0 isNaN(true); //salah, karena true diubah menjadi 1 isNaN(false); //salah, karena nilai palsu diubah menjadi 0
Jika tindakan ini perlu dilakukan tanpa pemeran tipe, gunakan metode Number. isNaN. Metode ini telah diperkenalkan ke dalam bahasa sejak ECMAScript 6
Bagaimana cara mengonversi string menjadi angka secara eksplisit?
Anda dapat secara eksplisit melemparkan string ke nomor menggunakan metode berikut
1. Gunakan operator unary + Yang akan ditempatkan sebelum nilai
+"7. 35"; // 7. 35 +"teks"; // NaN
Metode ini mengabaikan spasi di awal dan akhir baris, serta \n (umpan baris)
+"7. 35"; //7. 35 +"7. 35\n"; ///7. 35
Saat menggunakan metode ini, Anda perlu memperhatikan fakta bahwa string kosong atau string yang terdiri dari spasi dan \n diubah menjadi angka 0. Selain itu, juga mengubah tipe data null dan nilai boolean menjadi a nomor
Batal; //0 +benar; // +salah; //0 +" "; //0
2. Fungsi parseInt . Fungsi ini dirancang untuk mengonversi argumen ke bilangan bulat. Berbeda dengan menggunakan operator unary +, metode ini memungkinkan Anda untuk mengubah string menjadi angka, di mana tidak semua karakter adalah numerik. Itu mulai mengubah string, mulai dari karakter pertama. Dan segera setelah menemukan karakter yang bukan karakter numerik, fungsi ini berhenti bekerja dan mengembalikan nomor yang dihasilkan
ParseInt("18px"); //18 parseInt("33. 3%"); //33
Fungsi ini dapat bekerja dengan sistem bilangan yang berbeda (biner, oktal, desimal, heksadesimal). Indikasi basis sistem bilangan dilakukan melalui 2 argumen
ParseInt("18px", 10); //18 parseInt("33. 3%", 10); //33 parseInt("101",2); ///5 parseInt("B5",16); //181
Selain fungsi parseInt, JavaScript memiliki metode Number. parseInt. Metode ini tidak berbeda dengan fungsi parseInt dan diperkenalkan ke JavaScript dengan spesifikasi ECMASCRIPT 2015(6)
3. Fungsi parseFloat . Fungsi parseFloat mirip dengan parseInt , kecuali bahwa fungsi ini memungkinkan Anda mengonversi argumen menjadi bilangan pecahan
ParseFloat("33. 3%"); ///33. 3
Selain itu, fungsi parseFloat, tidak seperti parseInt, tidak memiliki 2 argumen, dan karena itu selalu mencoba memperlakukan string sebagai angka dalam notasi desimal
ParseFloat("3. 14"); parseFloat("314e-2"); parseFloat("0. 0314E+2");
Selain fungsi parseFloat, JavaScript memiliki metode Number. parseFloat. Metode ini tidak berbeda dengan fungsi parseFloat dan diperkenalkan ke JavaScript dengan spesifikasi ECMASCRIPT 2015(6)
Mengonversi angka menjadi string
Anda dapat mengonversi angka menjadi string menggunakan metode toString
(12. 8). toString(); . 8"
Metode toString juga memungkinkan Anda untuk menentukan basis sistem angka, mengingat Anda harus secara eksplisit memasukkan angka ke dalam string
(255). toString(16);
Bagaimana cara memeriksa apakah suatu variabel adalah angka?
Anda dapat menentukan apakah nilai suatu variabel adalah angka menggunakan salah satu metode berikut
1. Menggunakan fungsi isNaN dan isFinite
// myVar adalah variabel jika (. isNaN(parseFloat(myVar)) && isFinite(parseFloat(myVar))) ( //myVar adalah angka atau dapat dimasukkan ke dalamnya );
Sebagai fungsi
// fungsi function isNumeric(nilai) ( return. isNaN(parseFloat(nilai)) && isFinite(parseFloat(nilai)); . log(isNumeric(myVar));
Metode ini memungkinkan Anda untuk menentukan apakah nilai yang ditentukan adalah angka atau dapat dikonversi menjadi angka. Varian ini tidak menghitung string kosong, string spasi, null , Infinity , -Infinity , true dan false sebagai angka
2. Menggunakan tipe operator dan fungsi isFinite, isNaN
// fungsi yang memeriksa apakah nilainya adalah angka function isNumber(value) ( return typeof value === ". LANG. angka" && isFinite(nilai) &&. isNaN(nilai); . }
Fungsi ini menentukan apakah nilai yang ditentukan bertipe Number dan bukan salah satu dari nilai khusus Infinity, -Infinity, dan NaN. Jika demikian, maka fungsi ini mengembalikan nilai true
3. Menggunakan metode ECMAScript 6 Number. adalahInteger(nilai). Metode ini memungkinkan Anda untuk menentukan apakah nilai yang ditentukan adalah bilangan bulat
Nomor. isInteger("20"); //salah, karena metode ini tidak menerjemahkan string menjadi angka Number. isInteger(20); //benar, karena nilai yang diberikan adalah bilangan
Bilangan genap dan ganjil
Anda dapat memeriksa apakah suatu bilangan genap atau ganjil menggunakan fungsi berikut
// Fungsi untuk memeriksa apakah suatu bilangan genap fungsi isEven(n) ( return n % 2 == 0; ) // Fungsi untuk memeriksa apakah suatu bilangan ganjil fungsi isOdd(n) ( return Math. abs(n % 2) == 1; )
Tetapi sebelum melakukan pemeriksaan seperti itu, diinginkan untuk memastikan bahwa nilai yang ditentukan adalah angka
nilai=20; if (Number. isInteger(value)) ( if (isEven(value)) ( console. log("Number " + value. toString() + " - even"); ) )
Bilangan Prima dalam Javascript
Perhatikan contoh di mana kami menampilkan bilangan prima dari 2 hingga 100 menggunakan Javascript
// Fungsi yang memeriksa apakah suatu bilangan adalah fungsi prima isPrime(value) ( if (isNaN(value) . . isFinite(value) . value%1 . value< 2) return false; var max=Math. floor(Math. sqrt(value)); for (var i = 2; i< = max; i++) { if (value%i==0) { return false; } } return true; } // создать массив, который будет содержать простые числа от 2 до 100 var primaryNumber = ; for (var i = 2; i (lebih besar dari),< (меньше), >= (lebih besar dari atau sama dengan),3); . log(5>=3);
Saat membandingkan angka dengan bagian pecahan, perlu diperhitungkan kesalahan yang mungkin terjadi selama perhitungan ini
Misalnya, dalam JavaScript, jumlah angka (0,2 + 0,4) tidak sama dengan 0,6
Menghibur. log((0. 2+0. 4)==0. 6);
Kesalahan terjadi karena semua perhitungan dilakukan oleh komputer atau perangkat elektronik lainnya dalam sistem bilangan ke-2. Itu. sebelum melakukan tindakan apa pun, komputer harus terlebih dahulu mengubah angka yang disajikan dalam ekspresi menjadi sistem 2 angka. Namun, tidak ada bilangan desimal pecahan yang dapat direpresentasikan secara akurat dalam sistem bilangan ke-2
Misalnya, angka 0,25 10 diubah menjadi biner dengan tepat
0,125 × 2 = 0,25. 0 0,25 × 2 = 0,5. 0 0,5 × 2 = 1. 1 0,125 10 = 0,001 2
Misalnya angka 0. 2 10 dapat dikonversi ke sistem 2 hanya dengan akurasi tertentu
0,2 × 2 = 0,4. 0 0,4 × 2 = 0,8. 0 0,8 × 2 = 1,6. 1 0,6 × 2 = 1,2. 1 0,2 × 2 = 0,4. 0 0,4 × 2 = 0,8. 0 0,8 × 2 = 1,6. 1 0,6 × 2 = 1,2. 1 0,2 × 2 = 0,4. 0 0,4 × 2 = 0,8. 0 0,8 × 2 = 1,6. 1 0,6 × 2 = 1,2. 1. 0,2 10 = 0,001100110011. 2
Akibatnya, kesalahan ini akan mempengaruhi perhitungan jumlah dua angka dan hasil perbandingannya. Itu. ternyata JavaScript akan melihat entri ini sebagai berikut
0. 60000000000000001==0. 6
Saat menghitung atau menampilkan angka dengan bagian pecahan, Anda harus selalu menentukan presisi yang akan digunakan
Misalnya, bandingkan angka hingga 2 tempat desimal menggunakan metode toFixed() dan toPrecision()
//metode untukFixed() konsol. log((0. 2+0. 4). toFixed(2)==(0. 6). keTetap(2)); . log((0. 2+0. 4). toPrecision(2)==(0. 6). toPrecision(2));
Operasi matematika dasar
JavaScript memiliki operator matematika berikut. + (penjumlahan), - (pengurangan), * (perkalian), / (pembagian), % (sisa pembagian), ++ (nilai bertambah 1), -- (nilai dikurangi 1)
6+3 //9 6-3 //3 6*3 //18 6/3 //2 6%3 //0, mis. 6. 3=2 => 6-3*2 => sisa(0) 5%2 //1, misalnya. 5. 2=2(. 5) => 5-2*2 => istirahat(1) 7. 3%2 //1. 3, mis. 7. 3. 2=3(. 65) => 7. 3-2*3 => istirahat(1. 3) //tanda hasil operasi % sama dengan tanda nilai pertama -9%2. 5 //-1. 5, mis. 9. 2. 5=3(. 6) => 9-2. 5*3 => istirahat (1. 5) -9% -2. 5 //-1. 5, mis. 9. 2. 5=3(. 6) => 9-2. 5*3 => istirahat (1. 5) -2%5 //-2, mis. 2. 5=0(. 4) => 2-5*0 => istirahat(2) x = 3; . log(x); . log(x); . x+=y (x=x+y), x-=y (x=x-y), x*=y (x=x*y), x/= y (x=x/y), x%=y ( x=x%y). x=3;