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
NaNeksplisit (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