Jawaban:
Saya akan menggunakan operator plus unary untuk mengubahnya menjadi angka terlebih dahulu.
+num1 + +num2;
Dokumen MDN untuk parseInt
Dokumen MDN untuk parseFloat
Dalam parseInt radix ditetapkan sebagai sepuluh sehingga kita berada di basis 10. Dalam javascript nonstrik, angka yang diawali dengan 0diperlakukan sebagai oktal. Ini jelas akan menyebabkan masalah!
parseInt(num1, 10) + parseInt(num2, 10) //base10
parseFloat(num1) + parseFloat(num2)
Juga lihat jawaban ChaosPandion untuk pintasan yang bermanfaat menggunakan operator unary . Saya telah membuat biola untuk menunjukkan perilaku yang berbeda.
var ten = '10';
var zero_ten = '010';
var one = '1';
var body = document.getElementsByTagName('body')[0];
Append(parseInt(ten) + parseInt(one));
Append(parseInt(zero_ten) + parseInt(one));
Append(+ten + +one);
Append(+zero_ten + +one);
function Append(text) {
body.appendChild(document.createTextNode(text));
body.appendChild(document.createElement('br'));
}
+num1 + +num2lebih pendek, bisa dibilang lebih elegan. Pada dasarnya +operator unary dikonversi keNumber
Saya akan merekomendasikan untuk menggunakan operator plus unary, untuk memaksa string akhirnya diperlakukan sebagai angka, di dalam tanda kurung untuk membuat kode lebih mudah dibaca seperti berikut:
(+varname)
Jadi, dalam kasus Anda:
var num1 = '20',
num2 = '30.5';
var sum = (+num1) + (+num2);
// Just to test it
console.log( sum ); // 50.5
var result = Number(num1) + Number(num2);
mengonversi string menjadi floatsdengan parseFloat(string)atau integersdenganparseInt(string)
parseInt(string, 10)lihat developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Jika Anda perlu menambahkan dua string bersamaan yang jumlahnya sangat besar, Anda perlu mengevaluasi penambahan pada setiap posisi string:
function addStrings(str1, str2){
str1a = str1.split('').reverse();
str2a = str2.split('').reverse();
let output = '';
let longer = Math.max(str1.length, str2.length);
let carry = false;
for (let i = 0; i < longer; i++) {
let result
if (str1a[i] && str2a[i]) {
result = parseInt(str1a[i]) + parseInt(str2a[i]);
} else if (str1a[i] && !str2a[i]) {
result = parseInt(str1a[i]);
} else if (!str1a[i] && str2a[i]) {
result = parseInt(str2a[i]);
}
if (carry) {
result += 1;
carry = false;
}
if(result >= 10) {
carry = true;
output += result.toString()[1];
}else {
output += result.toString();
}
}
output = output.split('').reverse().join('');
if(carry) {
output = '1' + output;
}
return output;
}
Anda dapat menggunakan ini untuk menambahkan nomor:
var x = +num1 + +num2;
mencoba
var x = parseFloat(num1) + parseFloat(num2) ;
atau, tergantung pada kebutuhan Anda:
var x = parseInt(num1) + parseInt(num2) ;
http://www.javascripter.net/faq/convert2.htm
Anda mungkin ingin mengambil buku Javascript: The Good Parts , oleh Douglas Crockford. Javascript memiliki koleksi gotcha yang cukup besar! Buku ini jauh menuju klarifikasi mereka. Lihat juga
dan esai luar biasa Mr. Crockford, Javascript: Bahasa Pemrograman yang Paling Banyak Disalahpahami di Dunia .
Jika Anda ingin melakukan operasi dengan angka sebagai string (seperti dalam kasus di mana angka lebih besar dari 64bits bisa tahan) Anda dapat menggunakan perpustakaan bilangan bulat besar .
const bigInt = require('big-integer')
bigInt("999").add("1").toString() // output: "1000"
Di sini, Anda memiliki dua opsi untuk melakukan ini: -
1.Anda dapat menggunakan unary plus untuk mengubah nomor string menjadi integer.
2. Anda juga dapat mencapai ini melalui penguraian nomor ke dalam tipe yang sesuai. yaitu parseInt (), parseFloat () dll
.
Sekarang saya akan menunjukkan kepada Anda di sini dengan bantuan contoh (Temukan jumlah dari dua angka).
Menggunakan operator plus unary
<!DOCTYPE html>
<html>
<body>
<H1>Program for sum of two numbers.</H1>
<p id="myId"></p>
<script>
var x = prompt("Please enter the first number.");//prompt will always return string value
var y = prompt("Please enter the second nubmer.");
var z = +x + +y;
document.getElementById("myId").innerHTML ="Sum of "+x+" and "+y+" is "+z;
</script>
</body>
</html>
Menggunakan pendekatan parsing-
<!DOCTYPE html>
<html>
<body>
<H1>Program for sum of two numbers.</H1>
<p id="myId"></p>
<script>
var x = prompt("Please enter the first number.");
var y = prompt("Please enter the second number.");
var z = parseInt(x) + parseInt(y);
document.getElementById("myId").innerHTML ="Sum of "+x+" and "+y+" is "+z;
</script>
</body>
</html>
Anda bisa menggunakan parseIntuntuk mengurai string ke angka. Agar aman dari segala hal, selalu sampaikan 10argumen kedua untuk menguraikan dalam basis 10.
num1 = parseInt(num1, 10);
num2 = parseInt(num2, 10);
alert(num1 + num2);
Pastikan Anda melengkapi jawaban akhir Anda menjadi kurang dari 16 tempat desimal untuk pelampung karena skrip java bermasalah.
Misalnya 5 - 7.6 = -2.5999999999999996
@ cr05s19xx menyarankan pada pertanyaan duplikat:
JavaScript agak lucu dalam hal angka dan penambahan.
Memberi yang berikut ini
'20' - '30' = 10; // mengembalikan 10 sebagai angka '20' + '30' = '2030'; // Mengembalikannya sebagai string. Nilai yang dikembalikan dari document.getElementById adalah string, jadi lebih baik untuk menguraikan semuanya (bahkan yang berfungsi) ke angka, sebelum melanjutkan dengan penambahan atau pengurangan. Kode Anda dapat:
function myFunction() {
var per = parseInt(document.getElementById('input1').value);
var num = parseInt(document.getElementById('input2').value);
var sum = (num / 100) * per;
var output = num - sum;
console.log(output);
document.getElementById('demo').innerHTML = output;
}
function myFunction2() {
var per = parseInt(document.getElementById('input3').value);
var num = parseInt(document.getElementById('input4').value);
var sum = (num / 100) * per;
var output = sum + num;
console.log(output);
document.getElementById('demo1').innerHTML = output;
}
Saya menggunakan ini dalam proyek saya. Saya menggunakan tanda + untuk memperlakukan string sebagai angka (dalam variabel with_interesst)
<script>
function computeLoan(){
var amount = document.getElementById('amount').value;
var interest_rate = document.getElementById('interest_rate').value;
var days = document.getElementById('days').value;
var interest = (amount * (interest_rate * .01)) / days;
var payment = ((amount / days) + interest).toFixed(2);
var with_interest = (amount * (interest_rate * .01));
var with_interesst = (+amount * (interest_rate * .01)) + (+amount);
payment = payment.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
document.getElementById('payment').innerHTML = "Target Daily = PHP"+payment;
document.getElementById('with_interesst').innerHTML = "Amount w/Interest = PHP"+with_interesst;
}
</script>
<div name="printchatbox" id="printchatbox">
<form id="Calculate" class="form-horizontal">
<h2>You Can Use This Calculator Before Submit </h2>
<p>Loan Amount: PHP<input id="amount" type="number" min="1" max="1000000" onchange="computeLoan()"></p>
<p>Interest Rate: <input id="interest_rate" type="number" min="0" max="100" value="10" step=".1" onchange="computeLoan()">%</p>
<p>Term<select id="days" type="number" min="1" max="72" step=".1" onchange="computeLoan()">
<option value="40">40 Days</option>
<option value="50">50 Days</option>
<option value="60">60 Days</option>
<option value="70">70 Days</option>
<option value="80">80 Days</option>
<option value="90">90 Days</option>
<option value="100">100 Days</option>
<option value="120">120 Days</option>
</select>
</p>
<h2 id="payment"></h2>
<h2 id ="with_interesst"></h2>
</form>
</div>
Semoga ini bisa membantu
document.getElementById(currentInputChoosen).value -= +-100;
Bekerja dalam kasus saya, jika Anda mengalami masalah yang sama seperti saya dan tidak dapat menemukan solusi untuk kasus itu dan menemukan pertanyaan SO ini.
Maaf untuk sedikit di luar topik, tetapi karena saya baru tahu bahwa ini berfungsi, saya pikir mungkin layak untuk dibagikan.
Tidak tahu apakah ini solusi kotor, atau benar-benar sah.
Anda dapat menggunakan seperti ini:
var num1 = '20',
num2 = '30.5';
alert((num1*1) + (num2*1)); //result 50.5
Ketika menerapkan * 1 dalam num1, konversikan angka.
jika num1 berisi huruf atau koma, kembalikan NaN dikalikan dengan 1
jika num1 adalah nol, num1 mengembalikan 0
Salam!!!
Coba ini jika Anda mencari kode Javascript sederhana dan ingin menggunakan dua kotak input dan menambahkan angka dari dua nilai. Ini kodenya.
Enter the first number: <input type="text" id="num1" /><br />
Enter the seccond number: <input type="text" id="num2" /><br />
<input type="button" onclick="call()" value="Add"/>
<script type="text/javascript">
function call(){
var q=parseInt(document.getElementById("num1").value);
var w=parseInt(document.getElementById("num2").value);
var result=q+w;
}
</script>
untuk lebih jelasnya silakan kunjungi http://informativejavascript.blogspot.nl/2012/12/javascript-basics.html