Cara menggunakan number to string javascript

Number merupakan salah satu tipe data JavaScript yang perlu kita pahami secara mendalam, tipe data ini akan sering kita gunakan saat membuat aplikasi.

Misalnya, jika membuat aplikasi toko online, harga produk tentu perlu kita simpan atau perlakukan sebagai angka.

Tapi, tipe data angka di JavaScript memiliki perilaku dan beberapa keterbatas, ini semua perlu diketahui agar kita bisa menghindari perilaku tak terduga.

Jangan khawatir, Anda tidak perlu menjadi ahli matematika.

Berikut topik yang akan kita bahas seputar tipe data angka:

Apa Itu Number?

Number adalah tipe data primitif yang merepresentasikan data numerik atau angka entah itu positif maupun negatif.

Tipe data angka di JavaScript adalah format biner 64-bit double-precision, mengikuti standar internasional IEEE 754, sama seperti const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 8 di Java atau C#.

Itu artinya angka di JavaScript dapat mewakili nilai pecahan dan selalu disimpan sebagai floating point double-precission, namun dengan beberapa batasan.

Tidak seperti bahasa pemrograman yang lain termasuk Java dan C#, tipe data number di banyak bahasa pemrograman lain biasanya memiliki beberapa jenis, diantaranya integer, short, long, floating-point dan sebagainya.

Tapi di JavaScript, tipe data angka disimpan sebagai floating point tepatnya double.

Ini akan kita bahas di bawah.

Cara Membuat Data Number

Sama seperti string, kita bisa membuat data angka menggunakan sintaks literal, fungsi constructor const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 3, maupun objek const a = '19'; const b = Number(a); console.log(typeof a); // string console.log(typeof b); // number 0.

Angka yang dibuat dengan objek Number (const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 4) akan mengembalikan nilai objek atau non-primitf, sementara yang lainnya menghasilkan nilai primitif.

Tapi, method dan properti yang ada di dalam objek const a = '19'; const b = Number(a); console.log(typeof a); // string console.log(typeof b); // number 0 bisa digunakan pada angka primitif, mirip seperti string.

Oleh karena itu, jangan heran jika kita tiba-tiba bisa mengakses method atau properti tertentu pada angka primitif.

Misalnya, const a = '19'; const b = Number(a); console.log(typeof a); // string console.log(typeof b); // number 3 untuk membulatkan pecahan, contoh const a = '19'; const b = Number(a); console.log(typeof a); // string console.log(typeof b); // number 4. Method tersebut ada di dalam objek const a = '19'; const b = Number(a); console.log(typeof a); // string console.log(typeof b); // number 0.

Anda disarankan membuat angka menggunakan sintaks literal.

Number Literal

Untuk membuat angka menggunakan sintaks literal, kita bisa menulisnya secara langsung, mirip seperti string, tapi tanpa tanda kutip.

Contoh:

const a = 19; console.log(a); // 19 console.log(typeof a); // number console.log(a instanceof Number); // false

const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 3

Angka bisa dibuat menggunakan fungsi const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 3, metode ini menghasilkan nilai yang sama seperti sintaks literal, biasanya digunakan untuk mengkonversi angka di dalam string.

Caranya, cukup masukkan angka atau angka string yang ingin dikonversi ke dalam kurung lengkung.

Contoh:

const b = Number(19); console.log(b); // 19 console.log(typeof b); // number console.log(b instanceof Number); // false

Ini sama persis seperti angka yang dibuat dengan sintaks literal:

const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false

Kapan menggunakan fungsi const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 3? ketika kita ingin mengkonversi angka di dalam string, contoh:

const a = '19'; const b = Number(a); console.log(typeof a); // string console.log(typeof b); // number

const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 4

Jangan gunakan metode ini karena dapat menghasilkan perilaku tak terduga dan memperlambat eksekusi kode.

Membuat data angka menggunakan metode ini menghasilkan nilai non-primitif atau objek.

Contoh:

const a = new Number(1); console.log(a); // Number {1} console.log(typeof a); // object console.log(a instanceof Number); // true

Oleh karena itu, membandingkan angka yang dibuat menggunakan sintaks literal atau fungsi const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 3 dengan const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 4 tidak dianggap sama meskipun nilainya sama.

const a = 19; const b = new Number(19); console.log(a === b); // false

Nilai Khusus: const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 5, const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 6, dan const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 7

Selain angka (0123456789), di JavaScript, angka memiliki tiga nilai khusus.

Saat membuat aplikasi, ketiga nilai ini sangat jarang atau bahkan tidak pernah diinisialisasi ke variabel secara eksplisit

Tapi ketahuilah, nilai-nilai itu ada di JavaScript.

const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 5 adalah nilai numerik yang mewakili nilai positif tak terhingga, nilai ini biasanya muncul ketika bilangan positif selain 0 dibagi 0.

Contoh:

1 / 0; // Infinity typeof Infinity; // number

Sedangkan const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 6 mewakili nilai negatif tak terhingga, nilai ini biasanya muncul ketika bilangan negatif selain 0 dibagi 0.

Contoh:

-1 / 0; // -Infinity typeof -Infinity; // number

Bagaimana dengan const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 7 (Not-A-Number)?

const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 7 mewakili nilai yang tidak dapat direpresentasikan, misalnya mengalikan angka dengan string atau melakukan operasi matematika dengan nilai const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 7 itu sendiri.

Contoh:

'hello' * 1; // NaN NaN / 2; // NaN typeof NaN; // number

Kalau dipikir-pikir tidak masuk akal melakukan operasi matematika ke data teks, oleh karena itu JavaScript mengembalikan nilai yang tidak dapat direpresentasikan (const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 7).

Batas Aman Bilangan Bulat

Seperti yang sudah kita bahas sebelumnya, tipe data angka di JavaScript sebetulnya disimpan sebagai floating point double-precission.

Oleh karena itu memiliki beberapa keterbatasan seperti halnya bahasa pemrograman lain yang memiliki tipe data angka floating point double.

JavaScript hanya mampu mewakiliki bilangan bulat dengan aman antara const a = 19; const b = new Number(19); console.log(a === b); // false 1 hingga const a = 19; const b = new Number(19); console.log(a === b); // false 2.

  • Minimum: const a = 19; const b = new Number(19); console.log(a === b); // false 1 adalah const a = 19; const b = new Number(19); console.log(a === b); // false 4.
  • Maksimum: const a = 19; const b = new Number(19); console.log(a === b); // false 2 adalah const a = 19; const b = new Number(19); console.log(a === b); // false 6.

Aman di sini mengacu pada kemampuan JavaScript mewakiliki bilangan bulat dengan tepat dan akurat.

Di luar rentang tersebut, JavaScript dapat menafsirkan bilangan bulat secara salah.

Untuk mengetahui batas aman minimum dan maksimum, kita bisa menggunakan properti statis const a = 19; const b = new Number(19); console.log(a === b); // false 7 dan const a = 19; const b = new Number(19); console.log(a === b); // false 8 dari objek const a = '19'; const b = Number(a); console.log(typeof a); // string console.log(typeof b); // number 0:

Number.MIN_SAFE_INTEGER; // -9007199254740991 === -(2 ** 53 - 1) Number.MAX_SAFE_INTEGER; // 9007199254740991 === 2 ** 53 - 1

Setelah mengetahui batasnya, mari kita buktikan:

const b = Number(19); console.log(b); // 19 console.log(typeof b); // number console.log(b instanceof Number); // false 0

Perhatikan kode di atas, kita melakukan operasi matematika yang menghasilkan nilai melebihi batas aman nilai maksimum.

Oleh karena itu, terkadang menghasilkan nilai benar terkadang salah.

Perilaku ini juga berlaku jika kita melakukan operasi matematika yang menghasilkan nilai lebih kecil dari batas aman nilai minimum.

Jangankan nilai hasil operasi matematika, ditulis langsung saja mengembalikan nilai yang salah:

const b = Number(19); console.log(b); // 19 console.log(typeof b); // number console.log(b instanceof Number); // false 1

Jika Anda memerlukan angka diluar rentang 1 / 0; // Infinity typeof Infinity; // number 0 dan 1 / 0; // Infinity typeof Infinity; // number 1, gunakan 1 / 0; // Infinity typeof Infinity; // number 2 sebagai alternatinya.

Nilai Numerik yang Dapat Direpresentasikan

JavaScript juga memiliki batas nilai maksimum yang dapat direpresentasikan, kita bisa memeriksanya menggunkaan properti statis 1 / 0; // Infinity typeof Infinity; // number 3 pada objek const a = '19'; const b = Number(a); console.log(typeof a); // string console.log(typeof b); // number 0.

Nilai yang lebih besar dari 1 / 0; // Infinity typeof Infinity; // number 3 direpresentasikan sebagai const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 5.

const b = Number(19); console.log(b); // 19 console.log(typeof b); // number console.log(b instanceof Number); // false 2

Sedangkan angka positif terkecil yang dapat direpresentasikan, bisa dicek menggunkaan properti statis 1 / 0; // Infinity typeof Infinity; // number 7 pada objek const a = '19'; const b = Number(a); console.log(typeof a); // string console.log(typeof b); // number 0.

const b = Number(19); console.log(b); // 19 console.log(typeof b); // number console.log(b instanceof Number); // false 3

1 / 0; // Infinity typeof Infinity; // number 9 adalah angka positif terkecil (bukan angka paling negatif) yang dapat direpresentasikan dalam float presisi, dengan kata lain angka yang paling mendekati 0.

Operasi Matematika Bilangan Pecahan Tidak Selalu Akurat

Saat melakukan operasi matematika pada bilangan pecahan, JavaScript tidak selalu mengembalikan nilai yang akurat.

const b = Number(19); console.log(b); // 19 console.log(typeof b); // number console.log(b instanceof Number); // false 4

Untuk mengatasi masalah ini biasanya kedua operan dikalikan dengan 10 kemudian dijumlahkan, hasilnya dibagi 10.

const b = Number(19); console.log(b); // 19 console.log(typeof b); // number console.log(b instanceof Number); // false 5

Akurasi dan jumlah maksimum pecahan (angka setelah titik) yang dikembalikan sekitar 17, lebih dari itu tidak dikembalikan.

Perilaku Penjumlahan Angka dengan String

Seperti yang telah kita pelajari, operator -1 / 0; // -Infinity typeof -Infinity; // number 0 dapat digunakan untuk menjumlahkan angka dan menggabungkan string.

Menjumlahkan angka dengan angka hasilnya akan menjadi angka, ini dianggap sebagai penjumlahan:

const b = Number(19); console.log(b); // 19 console.log(typeof b); // number console.log(b instanceof Number); // false 6

Menjumlahkan string dengan string hasilnya akan menjadi string, ini dianggap sebagai penggabungan string:

const b = Number(19); console.log(b); // 19 console.log(typeof b); // number console.log(b instanceof Number); // false 7

Menjumlahkan angka dengan angka di dalam string hasilnya menjadi string, ini dianggap sebagai penggabungan string, begitu pula sebaliknya (angka di dalam string dengan angka):

const b = Number(19); console.log(b); // 19 console.log(typeof b); // number console.log(b instanceof Number); // false 8

Bagaimana dengan ini:

const b = Number(19); console.log(b); // 19 console.log(typeof b); // number console.log(b instanceof Number); // false 9

Nilai yang dikembalikan adalah string -1 / 0; // -Infinity typeof -Infinity; // number 1 bukan -1 / 0; // -Infinity typeof -Infinity; // number 2. Ini karena interpreter JavaScript bekerja dari kiri ke kanan.

Pertama, -1 / 0; // -Infinity typeof -Infinity; // number 3 (string dengan angka) hasilnya string -1 / 0; // -Infinity typeof -Infinity; // number 4 ini dianggap penggabungan string.

Kemudian -1 / 0; // -Infinity typeof -Infinity; // number 5 (string dengan angka), sama dengan sebelumnya dianggap penggabungan string.

Oleh karena itu hasilnya string -1 / 0; // -Infinity typeof -Infinity; // number 1.

Tapi, bagaimana dengan yang ini:

const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 0

Hasilnya string -1 / 0; // -Infinity typeof -Infinity; // number 7 bukan string -1 / 0; // -Infinity typeof -Infinity; // number 8. Sekali lagi, ini karena interpreter bekerja dari kiri ke kanan.

Pertama, -1 / 0; // -Infinity typeof -Infinity; // number 9 penjumlahan angka, hasilnya angka 'hello' * 1; // NaN NaN / 2; // NaN typeof NaN; // number 0. Kemudian, 'hello' * 1; // NaN NaN / 2; // NaN typeof NaN; // number 1 angka ditambah string dianggap penggabungan string, maka hasilnya string -1 / 0; // -Infinity typeof -Infinity; // number 7.

Jadi, selama angka dijumlahkan dengan string, JavaScript akan menafsirkan panggabungan string sehingga mengembalikan nilai string.

Perilaku ini hanya berlaku untuk operator -1 / 0; // -Infinity typeof -Infinity; // number 0.

Perilaku Operasi Matematika, Angka dengan Angka di Dalam String

Berbeda dengan operator aritmatika penjumlahan (-1 / 0; // -Infinity typeof -Infinity; // number 0).

Jika kita melakukan operasi matematika menggunakan operator perkalian, pengurangan, pembagian, modulus, atau eksponensial (pangkat), angka di dalam string akan dianggap sebagai angka.

const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 1

Perilaku ini hanya terjadi jika salah satu operan adalah angka di dalam string. Jika berupa karakter, mengembalikan nilai const a = 19; const b = Number(19); console.log(a === b); // true :: 19 console.log(typeof a === typeof b); // true :: number console.log(a instanceof Number === b instanceof Number); // true :: false 7.

Postingan terbaru

LIHAT SEMUA