Antworten:
Ich würde den unären Plus-Operator verwenden, um sie zuerst in Zahlen umzuwandeln.
+num1 + +num2;
MDN-Dokumente für parseInt
MDN-Dokumente für parseFloat
In parseInt wird radix als zehn angegeben, sodass wir uns in Basis 10 befinden. In nicht striktem Javascript wird eine mit vorangestellte Zahl 0als oktal behandelt. Dies würde offensichtlich Probleme verursachen!
parseInt(num1, 10) + parseInt(num2, 10) //base10
parseFloat(num1) + parseFloat(num2)
In der Antwort von ChaosPandion finden Sie auch eine nützliche Verknüpfung mit einem unären Operator . Ich habe eine Geige aufgestellt, um die verschiedenen Verhaltensweisen zu zeigen.
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 + +num2ist kürzer, wohl eleganter. Grundsätzlich +konvertiert der unäre Operator zuNumber
Ich würde empfehlen, den unären Plus-Operator zu verwenden, um zu erzwingen, dass eine eventuelle Zeichenfolge als Zahl in Klammern behandelt wird, um den Code wie folgt lesbarer zu machen:
(+varname)
In Ihrem Fall ist es also:
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);
Konvertieren Sie die Zeichenfolgen in floatsmit parseFloat(string)oder nach integersmitparseInt(string)
parseInt(string, 10)siehe developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Wenn Sie zwei Zeichenfolgen addieren müssen, bei denen es sich um sehr große Zahlen handelt, müssen Sie die Addition an jeder Zeichenfolgenposition auswerten:
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;
}
Sie können dies verwenden, um Zahlen hinzuzufügen:
var x = +num1 + +num2;
Versuchen
var x = parseFloat(num1) + parseFloat(num2) ;
oder je nach Ihren Bedürfnissen:
var x = parseInt(num1) + parseInt(num2) ;
http://www.javascripter.net/faq/convert2.htm
Vielleicht möchten Sie das Buch Javascript: The Good Parts von Douglas Crockford in die Hand nehmen . Javascript hat eine ziemlich große Sammlung von Fallstricken! Dieses Buch trägt wesentlich zur Klärung bei. Siehe auch
und Mr. Crockfords ausgezeichneter Aufsatz, Javascript: Die am meisten missverstandene Programmiersprache der Welt .
Wenn Sie eine Operation mit Zahlen als Zeichenfolgen ausführen möchten (wie in dem Fall, in dem Zahlen größer als 64 Bit sind), können Sie die Big-Integer- Bibliothek verwenden.
const bigInt = require('big-integer')
bigInt("999").add("1").toString() // output: "1000"
Hier haben Sie zwei Möglichkeiten, dies zu tun: -
1.Sie können das unäre Plus verwenden, um die Zeichenfolgennummer in eine Ganzzahl umzuwandeln.
2. Sie können dies auch erreichen, indem Sie die Nummer in den entsprechenden Typ analysieren. dh parseInt (), parseFloat () usw.
.
Jetzt zeige ich es Ihnen hier anhand von Beispielen (Finden Sie die Summe zweier Zahlen).
Verwenden des unären Plus-Operators
<!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>
Verwenden des Parsing-Ansatzes
<!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>
Sie können parseInteine Zeichenfolge auf eine Zahl analysieren. Um auf der sicheren Seite zu sein, geben Sie immer 10das zweite Argument an, das in Basis 10 analysiert werden soll.
num1 = parseInt(num1, 10);
num2 = parseInt(num2, 10);
alert(num1 + num2);
Stellen Sie sicher, dass Sie Ihre endgültige Antwort auf weniger als 16 Dezimalstellen für Floats runden, da das Java-Skript fehlerhaft ist.
Zum Beispiel 5 - 7,6 = -2,5999999999999996
@ cr05s19xx schlug eine doppelte Frage vor:
JavaScript ist ein bisschen lustig, wenn es um Zahlen und Addition geht.
Folgendes geben
'20' - '30' = 10; // gibt 10 als Zahl zurück '20' + '30' = '2030'; // Gibt sie als Zeichenfolge zurück. Die von document.getElementById zurückgegebenen Werte sind Zeichenfolgen. Daher ist es besser, sie alle (auch die funktionierenden) auf Zahl zu analysieren, bevor Sie mit der Addition oder Subtraktion fortfahren. Ihr Code kann sein:
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;
}
Ich benutze dies in meinem Projekt. Ich benutze + Zeichen, um Zeichenfolge als Zahl zu behandeln (in with_interesst Variable)
<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>
Ich hoffe es hilft
document.getElementById(currentInputChoosen).value -= +-100;
Funktioniert in meinem Fall, wenn Sie auf dasselbe Problem wie ich stoßen und keine Lösung für diesen Fall finden und diese SO-Frage finden.
Entschuldigung für ein bisschen Off-Topic, aber als ich gerade herausfand, dass dies funktioniert, dachte ich, dass es sich lohnen könnte, es zu teilen.
Ich weiß nicht, ob es sich um eine schmutzige oder tatsächlich legitime Problemumgehung handelt.
Sie können wie folgt verwenden:
var num1 = '20',
num2 = '30.5';
alert((num1*1) + (num2*1)); //result 50.5
Wenn Sie * 1 in num1 anwenden, konvertieren Sie einen String in eine Zahl.
Wenn num1 einen Buchstaben oder ein Komma enthält, wird NaN multipliziert mit 1 zurückgegeben
Wenn num1 null ist, gibt num1 0 zurück
mit freundlichen Grüßen!!!
Versuchen Sie dies, wenn Sie nach einfachem Javascript-Code suchen und zwei Eingabefelder verwenden und Zahlen aus den beiden Werten hinzufügen möchten. Hier ist der Code.
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>
Weitere Informationen finden Sie unter http://informativejavascript.blogspot.nl/2012/12/javascript-basics.html