Seronok dengan nombor JavaScript
mata utama
- Semua nombor dalam JavaScript diwakili menggunakan jenis data nombor, termasuk bilangan bulat, nombor sebenar, nombor heksadesimal, dan nombor notasi saintifik. Walau bagaimanapun, JavaScript secara dalaman mewakili semua nombor sebagai nombor titik terapung IEEE 754, yang bermaksud bahawa matematik JavaScript tidak 100% tepat.
- JavaScript mentakrifkan nombor yang dipanggil Not-A-Number (NAN) untuk mewakili bukan digit sebagai nombor. NAN adalah satu -satunya nilai angka dalam JavaScript yang tidak sama dengan dirinya sendiri, dan boleh diuji menggunakan fungsi ISNAN ().
- JavaScript mempunyai beberapa ciri, seperti sifar yang ditandatangani, menghasilkan sifar positif (0) dan sifar negatif (-0), yang dianggap nilai yang berbeza, tetapi pengendali perbandingan JavaScript tidak dapat membezakannya. Dalam JavaScript, membahagikan dengan sifar menghasilkan tak terhingga, dan membahagikan oleh sifar negatif menghasilkan -infinity.
- Jenis data adalah bahagian penting dari setiap bahasa pengaturcaraan, dan nombor mungkin jenis data yang paling penting. Lagipun, komputer benar -benar hanya kalkulator mahal. Seperti mana -mana bahasa pengaturcaraan yang berharga, JavaScript menyokong data berangka. Tetapi, seperti banyak aspek lain dari JavaScript, terdapat beberapa nuansa dalam nombor yang boleh menyebabkan anda masalah jika anda tidak berhati -hati. Artikel ini membincangkan data berangka dan beberapa ciri -cirinya.
.
Jenis nomborDalam JavaScript, semua nombor diwakili oleh jenis data nombor. Ini termasuk bilangan bulat, nombor sebenar, nombor heksadesimal dan nombor yang diwakili oleh notasi saintifik. Contoh berikut mengesahkan ini dengan menggunakan pengendali jenis ke pelbagai nombor. Dalam contoh ini, setiap aplikasi TypeOf mengembalikan nombor.
Dalam contoh terdahulu, nombor dalam pelbagai format. Walau bagaimanapun, secara dalaman, semua nombor JavaScript sebenarnya diwakili sebagai nombor titik terapung IEEE 754. Ini penting kerana ia bermakna bahawa JavaScript tidak mempunyai konsep integer, walaupun bahasa mempunyai fungsi parseInt (). Ini juga bermakna bahawa operasi matematik JavaScript tidak 100% tepat. Sebagai contoh, pertimbangkan ungkapan berikut.
typeof(100); typeof(3.14); typeof(0xDEADBEEF); typeof(7.89e2);
Jika anda tidak biasa dengan nombor titik terapung, anda pasti akan mengharapkan ungkapan ini untuk menilai benar. Lagipun, 0.1 0.2 sama dengan 0.3. Walau bagaimanapun, disebabkan bagaimana nombor titik terapung berfungsi, jumlahnya sebenarnya 0.300000000000000000000000004. Perbezaannya kecil, tetapi ini cukup untuk menyebabkan keseluruhan ekspresi menilai palsu.
(0.1 + 0.2) === 0.3
sifar positif dan sifar negatif
Satu lagi ciri standard IEEE 754 ialah sifar yang ditandatangani. Ini menghasilkan dua sifar - sifar positif, 0, dan sifar negatif, -0. Ini mungkin kelihatan pelik, tetapi keseronokan baru sahaja bermula. Jelas sekali, kedua -dua ini adalah nilai yang berbeza, jika tidak, hanya satu sifar. Walau bagaimanapun, jika anda menunjukkan salah satu daripada kedua -dua sifar ini, simbol akan dipadamkan. Sebagai contoh, kod berikut cuba memaparkan kedua -dua nilai sifar ini bersebelahan.
typeof(100); typeof(3.14); typeof(0xDEADBEEF); typeof(7.89e2);
lebih teruk, pengendali perbandingan JavaScript juga nampaknya tidak dapat membezakan antara kedua -dua nilai, seperti yang ditunjukkan dalam contoh berikut.
(0.1 + 0.2) === 0.3
Terdapat penyelesaian yang agak mudah untuk masalah ini. Dalam JavaScript, pembahagian dengan sifar menghasilkan tak terhingga. Begitu juga, membahagikan dengan sifar negatif akan menghasilkan -infinity. Oleh itu, untuk menentukan sama ada nombor adalah sama dengan -0, kita perlu menyemak sama ada sifar, kemudian gunakannya sebagai penyebut untuk pembahagian dan periksa -infiniti seperti yang ditunjukkan di bawah.
alert((+0) + " " + (-0)); // 显示 0 0
not-a-number (nan)
JavaScript sebenarnya mentakrifkan nombor yang dipanggil Not-A-Number (NAN). NAN adalah nilai palsu yang digunakan untuk mewakili nombor sebagai nombor. Nilai ini menarik kerana namanya sendiri mengetepikan kemungkinan bahawa ia adalah nombor, tetapi Typeof (NAN) adalah nombor. NAN juga menarik kerana ia adalah satu -satunya nilai dalam JavaScript yang tidak sama. Sebagai contoh, kod berikut akan kembali palsu.
alert((+0 === -0)); // 显示 true alert((-0 === +0)); // 显示 true
Anda boleh menguji NAN menggunakan fungsi ISNAN () dan bukannya menggunakan pengendali perbandingan seperti yang ditunjukkan di bawah.
function isNegativeZero(x) { return (x === 0 && (1/x) === -Infinity); }
alert((NaN === NaN)); // 显示 false
isNaN(1); // 返回 false isNaN(NaN); // 返回 true
Momen -momen yang menyeronokkan lain
Terdapat beberapa situasi lain yang boleh menyebabkan masalah dengan nombor. Pertama, anda harus menyedari pelayar lama, yang membolehkan sifat global seperti Infinity, Nan, dan Undefined untuk ditakrifkan semula sebagai nilai baru. Sebagai contoh, jika anda menggunakan NAN dengan kerap, kod berikut boleh menyebabkan banyak masalah. Nasib baik, pelayar moden mengabaikan tugasan kepada sifat -sifat yang disebutkan di atas. Mod yang ketat melangkah lebih jauh, menukar kegagalan senyap ini ke dalam kesilapan.
isNaN(true); isNaN(false); isNaN(""); isNaN(null); // 全部返回 false
function isNotANumber(x) { return x !== x; }
Kesimpulan
Artikel ini membincangkan beberapa ciri nombor dalam JavaScript. Mudah -mudahan anda sekarang memahami bagaimana masalah ini timbul dan bagaimana untuk mengelakkannya. Dan, sementara anda mungkin tidak sering menghadapi situasi seperti sifar negatif, sekurang -kurangnya sekarang anda sudah bersedia.
soalan yang sering ditanya mengenai nombor JavaScript (FAQ)
Apa yang berlaku apabila membahagikan nombor dengan sifar di JavaScript?
Dalam JavaScript, apabila anda membahagikan nombor dengan sifar, hasilnya adalah tak terhingga. Ini kerana mana -mana nombor yang dibahagikan dengan sifar secara matematik tidak ditentukan, tetapi JavaScript mewakili ia sebagai tak terhingga untuk tujuan praktikal. Walau bagaimanapun, jika anda membahagikan sifar sebanyak sifar, hasilnya adalah nan (bukan nombor), kerana operasi ini tidak pasti dalam matematik.
Bagaimana menangani BIGINT dibahagikan dengan sifar?
BigInt adalah objek terbina dalam dalam JavaScript yang menyediakan cara untuk mewakili bilangan bulat yang lebih besar daripada 2^53-1, bilangan terbesar yang JavaScript boleh mewakili dengan menggunakan nombor primitif. Jika anda cuba membahagikan BIGINT oleh sifar, JavaScript akan membuang rangeError yang menunjukkan bahawa operasi itu tidak sah.
Bagaimana untuk mencegah atau mengendalikan pembahagian oleh ralat sifar dalam JavaScript?
Anda boleh menggunakan pernyataan bersyarat dalam JavaScript untuk mencegah atau memproses pembahagian dengan kesilapan sifar dengan memeriksa sama ada penyebutnya adalah sifar sebelum melakukan operasi pembahagian. Jika penyebutnya adalah sifar, anda boleh memutuskan cara mengendalikannya, sebagai contoh, mengembalikan nilai tertentu atau memaparkan mesej ralat.
Kenapa 0 dibahagikan dengan 0 dalam javascript nan?
Dalam matematik, ungkapan 0/0 tidak ditentukan kerana ia tidak mempunyai nilai yang jelas dan jelas. Dalam JavaScript, operasi matematik yang tidak ditentukan menghasilkan NAN (bukan nombor). Oleh itu, apabila anda membahagikan sifar dengan sifar dalam javascript, hasilnya adalah nan.
Apakah perbezaan antara NAN dan Infinity dalam JavaScript?
Dalam JavaScript, Nan (bukan nombor) dan Infinity adalah nilai khas. NAN mewakili nilai yang bukan nombor undang -undang, biasanya disebabkan oleh operasi matematik yang tidak ditentukan atau tidak pasti. Infinity, sebaliknya, mewakili nombor yang lebih besar daripada nombor yang mungkin, biasanya disebabkan oleh membahagikan nombor dengan sifar.
Bagaimana untuk memeriksa sama ada hasil dalam JavaScript adalah nan?
Anda boleh menggunakan fungsi ISNAN () dalam JavaScript untuk memeriksa sama ada hasilnya adalah NAN. Jika parameter adalah nan, fungsi ini kembali benar, jika tidak palsu.
Bagaimana untuk memeriksa sama ada hasil dalam JavaScript adalah tak terhingga?
Anda boleh menggunakan fungsi ISFinite () dalam JavaScript untuk memeriksa sama ada hasilnya adalah nombor terhingga. Jika parameter adalah positif atau negatif infiniti, fungsi ini mengembalikan palsu, jika tidak benar.
Apakah maksud nombor primitif dalam JavaScript?
Nombor primitif dalam JavaScript digunakan untuk mewakili nilai angka. Ia boleh mewakili nilai integer dan nombor titik terapung. Walau bagaimanapun, ia hanya boleh mewakili nombor sehingga 2^53-1.
Bagaimana menangani jumlah besar dalam JavaScript?
Untuk mengendalikan bilangan besar yang melebihi had integer selamat JavaScript, anda boleh menggunakan objek BIGINT. BigInt membolehkan anda mewakili bilangan bulat yang lebih besar daripada 2^53-1.
Apa itu RangeError dalam JavaScript?
JavaScript melemparkan RangeError apabila nilai tidak berada dalam julat yang diharapkan. Sebagai contoh, cuba membahagikan BIGINT oleh hasil sifar dalam rangeError.
Atas ialah kandungan terperinci Seronok dengan nombor JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

Perbincangan mengenai realisasi kesan animasi tatal dan elemen Parallax dalam artikel ini akan meneroka bagaimana untuk mencapai yang serupa dengan laman web rasmi Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ... ...

Pembelajaran JavaScript tidak sukar, tetapi ia mencabar. 1) Memahami konsep asas seperti pembolehubah, jenis data, fungsi, dan sebagainya. 2) Pengaturcaraan asynchronous tuan dan melaksanakannya melalui gelung acara. 3) Gunakan operasi DOM dan berjanji untuk mengendalikan permintaan tak segerak. 4) Elakkan kesilapan biasa dan gunakan teknik debugging. 5) Mengoptimumkan prestasi dan mengikuti amalan terbaik.

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Masalah kemas kini data dalam operasi Zustand Asynchronous. Apabila menggunakan Perpustakaan Pengurusan Negeri Zustand, anda sering menghadapi masalah kemas kini data yang menyebabkan operasi tak segerak menjadi tidak lama lagi. � ...
