Angka

Nilai angka terdiri dari serangkaian karakter numerik apa pun, misalnya:

5

Jenis data angka juga mencakup beberapa properti global khusus yang mewakili konsep numerik, seperti Infinity dan NaN—nilai yang berarti "bukan angka", yang merupakan kemungkinan hasil dari percobaan melakukan penghitungan matematis pada nilai non-angka.

Objek angka

Saat nilai diteruskan ke fungsi Number(), nilai tersebut akan dikonversi menjadi angka yang setara. Misalnya, string numerik menghasilkan primitif angka yang setara:

Number( "10" );
> 10

Meneruskan nilai false atau null ke Number() akan menampilkan 0, dan true menampilkan 1.

Number( null );
> 0

Number( false );
> 0

Number( true );
> 1`

Jika nilai tidak dapat dikonversi, seperti dalam kasus undefined atau string yang berisi karakter non-numerik, fungsi Number akan menampilkan NaN:

Number( undefined );
> NaN

Number( "The number 3." );
> NaN

Seperti yang dijelaskan dalam pewarisan prototipe, Anda mungkin hanya memiliki sedikit atau tidak memiliki alasan untuk menggunakan objek Number sebagai konstruktor karena objek ini membuat objek Number, bukan literal angka.

let numObject = new Number( 15 );

numObject;
> Number { 15 }

Objek ini berperilaku sebagai nilai yang ditetapkan untuk operasi matematika, tetapi tidak lolos dalam perbandingan persamaan yang ketat terhadap literal angka karena jenis data tidak cocok, tanpa memberikan manfaat praktis apa pun dibandingkan nilai literal.

let tenObject = new Number( 10 );

tenObject + 5;
> 15

tenObject === 10;
> false

Float dan bilangan bulat

JavaScript hanya memiliki satu jenis angka: angka floating point presisi ganda IEEE 754-1985 64-bit antara -2^1024 dan 2^1024. Sebelum JavaScript menyimpan angka apa pun di memori, JavaScript akan mengonversi angka tersebut terlebih dahulu ke bilangan floating point biner, yang juga disebut sebagai float.

Penyimpanan 64-bit ini (satu bit "tanda" positif atau negatif, 11 bit untuk eksponen, dan 52 bit untuk pecahan) dapat menyebabkan error presisi dengan berapa pun jumlah digit yang tidak sesuai dengan rentang yang diizinkan. Keterbatasan ini melekat pada jenis data angka JavaScript.

0.1 + 0.7
> 0.7999999999999999

Sebaliknya, nilai angka dapat disimpan sebagai bilangan bulat, yaitu bilangan floating point tanpa pecahan antara -(2^53 − 1) dan 2^53 − 1. Karena float dan bilangan bulat disimpan dengan cara dasar yang sama, tidak ada perbedaan praktis dalam cara operasi angka-angka ini. Namun, sebaiknya gunakan bilangan bulat jika memungkinkan untuk menghindari error presisi.

Operator angka

Ketika Anda menggunakan operator matematika standar dengan primitif angka, urutan operasi matematika akan berlaku: setiap ekspresi yang digabungkan dalam tanda kurung akan dievaluasi terlebih dahulu, diikuti dengan eksponen, perkalian, pembagian, penambahan, dan pengurangan.

Operator Name Deskripsi Penggunaan Hasil
+ Penambahan 2+2 4
- Pengurangan 4-2 2
* Perkalian 2*5 10
/ Pembagian 10/5 2
++ Penambahan Menambahkan satu ke nomor 2++ 3
-- Pengurangan Mengurangi satu dari angka 3-- 2
** Eksponen Menampilkan hasil peningkatan operand
pertama ke pangkat operand kedua.
2**4 16
% Pengingat Menampilkan sisa sisa saat operand pertama
dibagi dengan operand kedua.
12%5 2

Anda juga dapat menggunakan operator penugasan matematika untuk melakukan operasi matematis pada nilai variabel dan langsung menetapkan nilai yang baru dihitung tersebut ke variabel.

Operator Name Penggunaan
+= Penetapan penambahan myValue += 2
-= Penetapan pengurangan myValue -= 2
*= Penetapan perkalian myValue *= 2
/= Penetapan pembagian myValue /= 2
**= Penetapan eksponen myValue **= 2
%= Penetapan tersisa myValue %= 2

Nilai simbolis

Primitif angka juga berlaku untuk beberapa kasus khusus: nilai "bukan angka" (NaN) dan nilai yang mewakili tak terhingga yang dapat berupa positif (Infinity) atau negatif (-Infinity).

Anda mungkin akan jarang mengalami Infinity karena pembagian dengan nol, yaitu kasus saat sebagian besar bahasa pemrograman menampilkan error:

10 / 0
> Infinity

Ingat bahwa JavaScript peka huruf besar/kecil. Infinity adalah jenis data angka yang mewakili konsep tak terhingga, tetapi infinity tidak memiliki arti khusus:

Infinity
> Infinity

infinity
> Uncaught ReferenceError: infinity is not defined

NaN (artinya "Bukan Angka") muncul lebih sering, dalam kasus ketika hasil operasi aritmatika tidak dapat dinyatakan sebagai angka. Misalnya, karena JavaScript mencoba menyimpulkan jenis data dari nilai dan konteks, literal string yang hanya berisi angka dapat digunakan dalam operasi matematika:

"2" * 2;
> 4

Namun, jika string tersebut tidak dapat diurai sebagai nilai angka, operasi matematika akan menghasilkan non-angka:

"two" * 2;
> NaN

NaN akan ditampilkan dalam kasus apa pun ketika nilai yang tidak valid dinyatakan sebagai angka dalam operasi matematika. Contohnya mencakup:

  • Konversi angka yang gagal (misalnya, parseInt( undefined ))
  • Operasi aritmetika yang hasilnya bukan bilangan riil (misalnya 0 / 0, Math.sqrt( -10 ))
  • Operasi aritmatika dengan hasil yang tidak tentu (0 * Infinity)
  • Operasi aritmatika yang menyertakan NaN eksplisit (NaN + 2) atau hasil NaN (2 * "string" / 2)

Menguji pemahaman Anda

Apa hasil dari meneruskan false ke Number()?

0
Salah
NaN
1

Apa hasil dari operasi matematika berikut?

"Six" * 3

NaN
2
18
Benar
0