Odpowiedzi:
Najpierw użyłbym jednoargumentowego operatora plus, aby przekonwertować je na liczby.
+num1 + +num2;
Dokumentacja MDN dla parseInt Dokumentacja
MDN dla parseFloat
W parseInt podstawa jest określana jako dziesięć, więc mamy podstawę 10. W javascript typu nonstrict liczba poprzedzona znakiem 0jest traktowana jako ósemkowa. To oczywiście spowodowałoby problemy!
parseInt(num1, 10) + parseInt(num2, 10) //base10
parseFloat(num1) + parseFloat(num2)
Zobacz także odpowiedź ChaosPandion, aby uzyskać przydatny skrót używający jednoargumentowego operatora . Ustawiłem skrzypce, aby pokazać różne zachowania.
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 + +num2jest krótszy, prawdopodobnie bardziej elegancki. Zasadniczo +operator jednoargumentowy konwertuje naNumber
Zalecałbym użycie jednoargumentowego operatora plus, aby wymusić traktowanie ostatecznego ciągu jako liczby, w nawiasach, aby kod był bardziej czytelny, jak poniżej:
(+varname)
Więc w twoim przypadku jest to:
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);
przekonwertować ciągi na floatswith parseFloat(string)lub to integerswithparseInt(string)
parseInt(string, 10)zobacz developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ ...
Jeśli chcesz dodać do siebie dwa ciągi, które są bardzo dużymi liczbami, musisz obliczyć dodawanie w każdej pozycji ciągu:
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;
}
Możesz tego użyć, aby dodać numery:
var x = +num1 + +num2;
próbować
var x = parseFloat(num1) + parseFloat(num2) ;
lub w zależności od potrzeb:
var x = parseInt(num1) + parseInt(num2) ;
http://www.javascripter.net/faq/convert2.htm
Może zechcesz sięgnąć po książkę Javascript: The Good Parts autorstwa Douglasa Crockforda. Javascript ma dość pokaźną kolekcję problemów! Ta książka ma duży wpływ na ich wyjaśnienie. Zobacz też
oraz doskonały esej pana Crockforda, Javascript: The World's Most Misunderstood Programming Language .
Jeśli chcesz wykonywać operacje na liczbach jako łańcuchach (jak w przypadku, gdy liczby są większe niż 64 bity), możesz użyć biblioteki big-integer .
const bigInt = require('big-integer')
bigInt("999").add("1").toString() // output: "1000"
Tutaj masz dwie możliwości, aby to zrobić: -
Możesz użyć jednoargumentowego plusa, aby przekonwertować numer ciągu na liczbę całkowitą.
Możesz to również osiągnąć, analizując liczbę na odpowiedni typ. tj. parseInt (), parseFloat () itp
.
Teraz pokażę ci tutaj za pomocą przykładów (znajdź sumę dwóch liczb).
Korzystanie z jednoargumentowego operatora 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>
Korzystanie z metody analizowania
<!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>
Możesz użyć parseIntdo przeanalizowania ciągu do liczby. Aby być po bezpiecznej stronie, zawsze przekazuj 10jako drugi argument do analizy o podstawie 10.
num1 = parseInt(num1, 10);
num2 = parseInt(num2, 10);
alert(num1 + num2);
Upewnij się, że zaokrągliłeś ostateczną odpowiedź do mniej niż 16 miejsc po przecinku dla liczb zmiennoprzecinkowych, ponieważ skrypt java zawiera błędy.
Na przykład 5 - 7,6 = -2,5999999999999996
@ cr05s19xx zasugerował na zduplikowane pytanie:
JavaScript jest trochę zabawny, jeśli chodzi o liczby i dodawanie.
Podając następujące
„20” - „30” = 10; // zwraca 10 jako liczbę '20' + '30' = '2030'; // Zwraca je jako ciąg znaków Wartości zwracane z document.getElementById są ciągami, więc lepiej jest je wszystkie (nawet działające) przeanalizować jako liczbę, zanim przystąpisz do dodawania lub odejmowania. Twój kod może być:
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;
}
Używam tego w moim projekcie, używam znaku +, aby traktować ciąg jako liczbę (w zmiennej 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>
Mam nadzieję, że to pomoże
document.getElementById(currentInputChoosen).value -= +-100;
Działa w moim przypadku, jeśli napotkasz taki sam problem jak ja i nie możesz znaleźć rozwiązania dla tego przypadku i znaleźć to pytanie SO.
Przepraszam za trochę nie na temat, ale kiedy właśnie się dowiedziałem, że to działa, pomyślałem, że warto się tym podzielić.
Nie wiem, czy jest to brudne obejście, czy faktycznie legalne.
Możesz użyć w ten sposób:
var num1 = '20',
num2 = '30.5';
alert((num1*1) + (num2*1)); //result 50.5
Gdy zastosujesz * 1 w num1, zamień ciąg na liczbę.
jeśli num1 zawiera literę lub przecinek, zwraca wartość NaN pomnożoną przez 1
jeśli num1 ma wartość null, num1 zwraca 0
Z poważaniem!!!
Spróbuj tego, jeśli szukasz prostego kodu JavaScript i chcesz użyć dwóch pól wejściowych i dodać liczby z dwóch wartości. Oto kod.
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>
Aby uzyskać więcej informacji, odwiedź http://informativejavascript.blogspot.nl/2012/12/javascript-basics.html