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 hasilNaN
(2 * "string" / 2
)
Menguji pemahaman Anda
Apa hasil dari meneruskan false
ke Number()
?
Apa hasil dari operasi matematika berikut?
"Six" * 3