Postingan lainnya
Kelas Premium!
Belajar Javascript untuk website
Gunakan kupon "mulaijs" untuk diskon 75 ribu!
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?
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
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>
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.
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>