Risposte:
Vorrei usare l'operatore più unario per convertirli prima in numeri.
+num1 + +num2;
Documenti MDN per parseInt
Documenti MDN per parseFloat
In parseInt radix è specificato come dieci in modo da essere nella base 10. In javascript senza restrizioni un numero anteposto 0viene trattato come ottale. Ciò ovviamente causerebbe problemi!
parseInt(num1, 10) + parseInt(num2, 10) //base10
parseFloat(num1) + parseFloat(num2)
Vedi anche la risposta di ChaosPandion per un utile collegamento usando un operatore unario . Ho creato un violino per mostrare i diversi comportamenti.
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 + +num2è più corto, probabilmente più elegante. Fondamentalmente l' +operatore unario si converte inNumber
Consiglierei di utilizzare l'operatore unario positivo, per forzare un'eventuale stringa da trattare come numero, tra parentesi per rendere il codice più leggibile come il seguente:
(+varname)
Quindi, nel tuo caso è:
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);
converti le stringhe in floatscon parseFloat(string)o in integersconparseInt(string)
parseInt(string, 10)vedi developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Se devi aggiungere due stringhe insieme che sono numeri molto grandi, dovrai valutare l'aggiunta in ogni posizione della stringa:
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;
}
Puoi usarlo per aggiungere numeri:
var x = +num1 + +num2;
provare
var x = parseFloat(num1) + parseFloat(num2) ;
o, a seconda delle tue esigenze:
var x = parseInt(num1) + parseInt(num2) ;
http://www.javascripter.net/faq/convert2.htm
Potresti prendere il libro Javascript: The Good Parts , di Douglas Crockford. Javascript ha una raccolta piuttosto consistente di gotcha! Questo libro fa molto per chiarirli. Guarda anche
e l'eccellente saggio di Crockford, Javascript: il linguaggio di programmazione più frainteso al mondo .
Se si desidera eseguire operazioni con numeri come stringhe (come nel caso in cui numeri possono contenere più di 64 bit), è possibile utilizzare la libreria di interi di grandi dimensioni .
const bigInt = require('big-integer')
bigInt("999").add("1").toString() // output: "1000"
Qui, hai due opzioni per fare questo: -
1.È possibile utilizzare il plus unario per convertire il numero di stringa in numero intero.
2.Puoi anche ottenere questo risultato analizzando il numero nel tipo corrispondente. cioè parseInt (), parseFloat () ecc
.
Ora ti mostrerò qui con l'aiuto di esempi (Trova la somma di due numeri).
Utilizzo dell'operatore unary plus
<!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>
Utilizzando l'approccio di analisi-
<!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>
È possibile utilizzare parseIntper analizzare una stringa in un numero. Per essere al sicuro delle cose, passa sempre 10come secondo argomento da analizzare nella base 10.
num1 = parseInt(num1, 10);
num2 = parseInt(num2, 10);
alert(num1 + num2);
Assicurati di arrotondare la risposta finale a meno di 16 cifre decimali per i float poiché lo script java è difettoso.
Ad esempio 5 - 7,6 = -2,5999999999999996
@ cr05s19xx ha suggerito una domanda duplicata:
JavaScript è un po 'divertente quando si tratta di numeri e aggiunte.
Dare quanto segue
'20' - '30' = 10; // restituisce 10 come numero '20' + '30' = '2030'; // Restituisce come stringa I valori restituiti da document.getElementById sono stringhe, quindi è meglio analizzarli tutti (anche quello che funziona) per numerarli, prima di procedere con l'aggiunta o la sottrazione. Il tuo codice può essere:
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;
}
Lo uso nel mio progetto. Uso + segno per trattare la stringa come un numero (nella variabile 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>
Spero che sia d'aiuto
document.getElementById(currentInputChoosen).value -= +-100;
Funziona nel mio caso, se ti imbatti nello stesso problema come me e non riesci a trovare una soluzione per quel caso e trovi questa domanda SO.
Ci scusiamo per un po 'fuori tema, ma appena ho scoperto che funziona, ho pensato che valesse la pena condividere.
Non so se si tratta di una soluzione sporca, o effettivamente legittima.
Puoi usare così:
var num1 = '20',
num2 = '30.5';
alert((num1*1) + (num2*1)); //result 50.5
Quando si applica * 1 in num1, convertire la stringa in un numero.
se num1 contiene una lettera o una virgola, restituisce NaN moltiplicando per 1
se num1 è null, num1 restituisce 0
Cordiali saluti!!!
Prova questo se stai cercando un semplice codice Javascript e vuoi usare due caselle di input e aggiungere numeri dai due valori. Ecco il codice.
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>
per maggiori dettagli, visitare http://informativejavascript.blogspot.nl/2012/12/javascript-basics.html