Cara mengatasi penjumlahan yang dianggap sebagai string pada prompt javascript

Sebenarnya tidak terlalu penting sih, tapi penasaran aja. Misalnya seperti ini:

// Penjumlahan seperti ini dianggap sbg string karena tandanya + (tambah)
var a = prompt("Ketikkan angka saja:"); // Misal kita ketik: 9
var b = prompt("Ditambah  dengan:"); // Lalu misalnya kita juga ketik : 9
var hasil = alert(a + b); // Maka hasilnya akan menampilkan: 99

// Sedangkan jika penjumlahannya merupakan pengurangan, perkalian atau pembagian dapat menampilkan hasil yang benar
var x = prompt("Ketikkan angka saja:"); // Misal kita ketik: 9
var y = prompt("Dikurangi dengan:"); // Lalu misalnya kita juga ketik: 9
var hasil = alert(a - b); // Maka hasilnya akan menampilkan: 0

Adakah cara mengatasi kasus :v seperti ini?

avatar UcokTambunan
@UcokTambunan

12 Kontribusi 7 Poin

Diperbarui 5 tahun yang lalu

4 Jawaban:

Nanya disini, nanya juga di chanel youtubenya Web Programming Unpas. Ehh udah dijawab duluan di sana. wkwk Jadi cara mengatasinya adalah dengan menggunakan fungsi parseInt()

Maka dari contoh pertanyaan di atas penyelesaiannya adalah:

<pre> var a = prompt("Ketikkan angka saja:"); // Misal kita ketik: 9 var b = prompt("Ditambah dengan:"); // Lalu misalnya kita juga ketik : 9 var hasil = alert(parseInt(a) + parseInt(b)); // Jadi dapat menampilkan hasil yang benar yaitu: 18 </pre>

Nanya sendiri, jawab sendiri. wkwk

avatar UcokTambunan
@UcokTambunan

12 Kontribusi 7 Poin

Dipost 5 tahun yang lalu

Jawaban Terpilih

Sebetulnya jawaban diatas kurang tepat, karena parseInt() ga bisa digunakan kalau angkanya desimal.

Jadi kalau pakai code diatas dan prompt valuenya 7.5 + 7.5 hasilnya 14, karena parseInt(7.5) = 7.

Lebih baik pakai Number()

<pre> var a = prompt("Ketikkan angka saja:"); // Misal kita ketik: 7.5 var b = prompt("Ditambah dengan:"); // Lalu misalnya kita juga ketik : 7.5 var hasil = alert(Number(a) + Number(b)); // Hasilnya 15 </pre>

avatar rachmatsasongko
@rachmatsasongko

410 Kontribusi 426 Poin

Dipost 5 tahun yang lalu

Selain parseInt dan Number, ada juga parseFloat, + (unary operator), dan banyak lagi cara untuk mengubah tipe data string menjadi angka. Salah satu perbedaan pada Number dengan parseFloat adalah kalau kita mengawali input dengan angka lalu setelah angka ada huruf, maka parseFloat akan mengabaikan huruf tersebut. Contoh:

<pre> var a = prompt("Ketikkan angka saja:"); // Misal kita ketik: 7.5px var b = prompt("Ditambah dengan:"); // Lalu misalnya kita juga ketik : 7.5px var hasil = alert(parseFloat(a) + parseFloat(b)); // Akan menampilkan hasil: 15 </pre> Sedangkan jika kita menggunakan Number, maka akan menganggapnya NaN (not a number).

Di lain hal, jika kita menginputkan kosong (tidak ada angka), Number menganggap itu 0 (nol), sedangkan parseFloat akan menganggap itu NaN (not a number).

Menggunakan Number sama saja dengan menggunakan unary +. <img src=' https://flaviocopes.com/how-to-convert-string-to-number-javascript/performance.png '> Masing masing ada kelebihan dan kekurangan, tergantung kebutuhannya.

avatar UcokTambunan
@UcokTambunan

12 Kontribusi 7 Poin

Dipost 5 tahun yang lalu

Gunakan fungsi eval() untuk mengubah string menjadi bilangan bulat

<pre> var a = eval(prompt("Ketikkan angka saja:")); var b = eval(prompt("Ditambah dengan:")); var hasil = alert(a + b); </pre>

avatar sabas
@sabas

3 Kontribusi 0 Poin

Dipost 5 tahun yang lalu

Login untuk ikut Jawaban