Bagaimana kita menghitung akar angka menggunakan javascript?

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

  1. Matematika. E, nilai logaritma natural dari e, dengan nilai 2. 718281828459045
  2. Matematika. LN10, nilai logaritma natural 10, dengan nilai 2. 302585092994046
  3. Matematika. LN2, nilai logaritma natural 2, dengan nilai 0. 6931471805599453
  4. Matematika. LOG10E, nilai logaritma natural basis 10, dengan nilai 0. 4342944819032518
  5. Matematika. LOG2E, nilai logaritma natural basis 2, dengan nilai 1. 4426950408889634
  6. Matematika. PI. Berisi nilai pi (π) dengan nilai 3. 141592653589793
  7. Matematika. SQRT1_2, hasil 1 dibagi akar kuadrat dari 2 (setengah akar 2), dengan nilai 0. 707106781186
  8. 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 positif

Matematika. 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 radian

Matematika. 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 mendatang

Mengapa 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 ini

0. 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
  1. Jika argumen tidak ditentukan untuk toFixed(), defaultnya adalah nol, yang berarti 0 tempat desimal, argumen memiliki nilai maksimum 20
  2. Jika tidak ada argumen yang diberikan untuk Presisi, nomor tersebut tidak akan disentuh
misalkan randNum = 6,25; . toFixed(); . PI. toPrecision(1); . 335; . keTetap(2); . 337; . toPrecision(3); . 3"
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 atas

Biarkan 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 ini

0,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 100

Fungsi 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. lantai

Matematika. 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 tidak

Matematika. 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 sama

Fungsi 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 100

Biarkan 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 Down

Fungsi 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 kapital

Urutkan berdasarkan abjad

Tampaknya mengurutkan array menurut abjad seharusnya menjadi tugas yang paling sederhana

biarkan 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 diprediksi

Biarkan 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 game

Biarkan 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 fisik

Dalam 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 eksponen

Matematika. 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 dikuadratkan

Matematika. 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 tersebut

Matematika. 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 CamelCase

Math. 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 sekali

matematika. ab()

Metode Math. abs() mengembalikan nilai absolut suatu bilangan, yang mengingatkan kita pada fungsi modulo matematika analog

Biarkan 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 lanjut

Sintaks. 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 point

Sintaks. 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 <= 100; i++) { if(isPrime(i)) primaryNumber. push(i); } // вывести в консоль простые числа от 2 до 100 console. log(primaryNumber);

Pembulatan Angka dalam Javascript

Ada berbagai cara untuk membulatkan bilangan pecahan ke nilai integer dalam JavaScript

1. Menggunakan metode Math. floor , Math. ceil dan Math. round yang dirancang khusus untuk ini. Metode Math. floor membulatkan angka pecahan ke bilangan bulat terdekat, mis. hanya membuang bagian pecahan. Math. ceil membulatkan angka pecahan ke bilangan bulat terdekat. Math. round membulatkan angka ke atas atau ke bawah tergantung pada nilai bagian pecahan. Jika bagian pecahan lebih besar dari atau sama dengan 0,5, maka ke atas, sebaliknya gulir ke bawah

Console. log(Math. floor(7. 9)); // console. log(Math. ceil(7. 2)); //8 console. log(Math. round(7. 5)); //delapan

2. Menggunakan metode toFixed (presisi). Metode ini membulatkan bagian pecahan dari angka ke presisi yang ditentukan. Hasil pembulatan dikembalikan sebagai string

Console. log(7. 987. toFixed(2)); //"7,99"

Jika tidak ada cukup tempat desimal untuk membentuk akurasi angka yang ditentukan, maka angka tersebut diisi dengan nol

Console. log(7. 987. toFixed(5)); //"7. 98700"

3. Melalui metode toPrecision(presisi). Metode ini mewakili angka dengan presisi yang ditentukan. Pada saat yang sama, ia tidak hanya dapat membulatkan pecahan, tetapi juga seluruh bagian angka. Angka yang dihasilkan dapat direpresentasikan dengan metode ini tergantung pada hasil dalam titik tetap atau dalam bentuk eksponensial

Console. log((1001). toPrecision(2)); //"1. 0e+3" console. log((1001). toPrecision(5)); //"1001. 0" console. log((12. 4). toPrecision(1)); //"1e+1" console. log((12. 4). toPrecision(2)); //"12" console. log((12. 4). toPrecision(3)); //"12. 4" console. log((12. 4). toPrecision(5)); //"12. 400"

4. Menggunakan operator NOT atau OR logis

//melalui negasi logika ganda console. log(~~7. 9); // dengan menggunakan logika OR dengan nol. console. log(7. 9^0); ///7

Bilangan bulat dan bagian pecahan dari suatu bilangan

Anda bisa mendapatkan bagian bilangan bulat dari sebuah angka menggunakan metode Math. floor() dan parseInt()

Console. log(Math. floor(7. 21)); // 7 console. log(parseInt(7. 21)); // 7

Anda bisa mendapatkan bagian pecahan dari suatu angka menggunakan operator persentase (%). Operator ini mengembalikan sisa yang akan diperoleh dari membagi angka pertama dengan yang kedua. Dalam hal ini, 1 harus digunakan sebagai angka ke-2

Console. log(7. 21%1); . 209999999999999996 // akurat hingga 2 tempat desimal konsol. log((7. 21%1). toFixed(2)); // "0. 21"

Selain itu, bagian pecahan juga dapat diperoleh dengan menggunakan perhitungan

angka var = 7. 21; . lantai (Matematika. abs(number)); console. log(bilangan pecahan); // 0. 2099999999999996

Apakah bilangan tersebut habis dibagi?

Anda dapat menentukan apakah suatu angka habis dibagi menggunakan operator persentase

var nomor = 9; . log ("Bilangan " + bilangan + " habis dibagi 3"); ) else ( console. log("Bilangan " + bilangan + " tidak habis dibagi 3");

Pemformatan Angka

Dalam JavaScript, metode toLocaleString() memungkinkan Anda memformat keluaran angka sesuai dengan lokal (pengaturan bahasa sistem operasi)

Misalnya, mari memformat angka sesuai dengan standar regional yang dipasang di sistem secara default

jumlah var = 345,46; . log(nomor. toLocaleString());

Misalnya, mari memformat angka menurut standar regional Rusia (ru)

Menghibur. log((108. 1). toLocaleString("ru-RU")); . 1"

Metode ini juga dapat digunakan untuk memformat angka sebagai mata uang

Menghibur. log((2540. 125). toLocaleString("ru-RU",(style. "mata uang", mata uang. "MENGGOSOK"))); . konsol 13". log((89. 3). toLocaleString("ru-RU",(style. "mata uang", mata uang. "USD"))); . konsol 30". log((2301. 99). toLocaleString("ru-RU",(style. "mata uang", mata uang. "EUR")));

Nyatakan angka sebagai persentase

Menghibur. log((0. 45). toLocaleString("ru-RU",(style. "persen")));

Pisahkan angka menjadi digit (gunakan properti Grouping)

Menghibur. log((125452. 32). toLocaleString("ru-RU",(useGrouping. BENAR)));

Cetak angka dengan jumlah digit yang ditentukan (2) setelah titik desimal

Menghibur. log((1240. 4564). toLocaleString("ru-RU",(minimumFractionDigits. 2, Digit Pecahan maksimum. 2))); . 46"

Perbandingan Angka

Operator berikut digunakan untuk membandingkan angka dalam JavaScript. == (sama dengan),. = (tidak sama dengan), > (lebih besar dari),< (меньше), >= (lebih besar dari atau sama dengan),<= (меньше или равно)

Sebagai contoh, mari kita bandingkan dua angka

Menghibur. log(2>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;