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," hasil yang mungkin dicapai dari percobaan perhitungan pada nilai non-angka.

Objek angka

Saat nilai diteruskan ke fungsi Number(), nilai tersebut akan dikonversi menjadi setara dengan angkanya. Misalnya, suatu {i>string <i}numerik menghasilkan nilai yang setara dengan primitif angka:

Number( "10" );
> 10

Meneruskan nilai false atau null ke Number() akan menampilkan 0, dan true akan 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 akan memiliki sedikit atau tidak ada alasan untuk menggunakan objek Number sebagai konstruktor, karena membuat objek Number, bukan literal angka.

let numObject = new Number( 15 );

numObject;
> Number { 15 }

Objek ini berperilaku seperti nilai yang ditetapkan untuk operasi matematika, tetapi gagal 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: IEEE 754-1985 presisi ganda 64-bit bilangan floating point di antara -2^1024 dan 2^1024. Sebelum JavaScript menyimpan angka apa pun di memori, JavaScript mengonversi bilangan tersebut menjadi bilangan floating point biner, yang juga disebut 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 angka berapa pun yang tidak sesuai dengan rentang yang diizinkan. Keterbatasan ini melekat ke jenis data angka JavaScript.

0.1 + 0.7
> 0.7999999999999999

Nilai angka dapat disimpan sebagai bilangan bulat, yaitu angka floating point tanpa pecahan antara -(2^53 − 1) dan 2^53 − 1. Karena {i>float<i} dan bilangan bulat disimpan dengan cara mendasar yang sama, tidak ada perbedaan praktis dalam cara angka-angka ini beroperasi. Namun, sebaiknya gunakan bilangan bulat setiap kali mungkin untuk menghindari kesalahan presisi.

Operator angka

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

Operator Nama 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
pertama operand ke pangkat operand kedua.
2**4 16
% Pengingat Menampilkan sisa yang tersisa saat
operand pertama dibagi dengan operand kedua.
12%5 2

Anda juga dapat menggunakan operator penugasan matematika untuk mengerjakan pada nilai suatu variabel dan segera menetapkan nilai yang baru dihitung ke variabel tersebut.

Operator Nama 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: "bukan angka" nilai (NaN) dan nilai yang mewakili tak terhingga yang bisa bernilai positif (Infinity) atau negatif (-Infinity).

Anda mungkin jarang menemukan Infinity sebagai hasil pembagian dengan nol, kasus di mana sebagian besar bahasa pemrograman menampilkan error:

10 / 0
> Infinity

Ingat bahwa JavaScript peka huruf besar/kecil. Infinity adalah jenis data angka merepresentasikan 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 dari operasi aritmatika tidak dapat dinyatakan sebagai angka. Misalnya, karena JavaScript mencoba menyimpulkan tipe data dari nilai dan konteks, literal string yang hanya berisi angka bisa digunakan dalam operasi matematika:

"2" * 2;
> 4

Namun, jika string itu tidak bisa diurai sebagai nilai angka, model operasi tersebut akan menghasilkan bilangan bukan:

"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 di mana 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()?

Salah
NaN
1
0

Apa hasil dari operasi matematika berikut?

"Six" * 3

18
0
Benar
NaN
2