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