Yanıtlar:
Onları önce sayılara dönüştürmek için tekli artı operatörünü kullanırdım.
+num1 + +num2;
Parse için
MDN belgeleri ParseFloat için
MDN belgeleri
ParseInt yarıçapında on olarak belirtilir, böylece taban 10'dayız 0
. Bu elbette sorunlara yol açacaktır!
parseInt(num1, 10) + parseInt(num2, 10) //base10
parseFloat(num1) + parseFloat(num2)
Ayrıca, tekli bir operatör kullanarak yararlı bir kısayol için ChaosPandion'un cevabına bakın . Farklı davranışları göstermek için bir keman kurdum.
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
daha kısa, tartışmasız daha zarif. Temel olarak, tekli +
operatörNumber
Kodun aşağıdaki gibi daha okunabilir hale getirilmesi için parantez içinde sayı olarak ele alınacak bir dizeyi zorlamak için tekli artı operatörünün kullanılmasını tavsiye ederim:
(+varname)
Yani, sizin durumunuzda:
var num1 = '20',
num2 = '30.5';
var sum = (+num1) + (+num2);
// Just to test it
console.log( sum ); // 50.5
Dizeleri dönüştürmek floats
ile parseFloat(string)
veya integers
birlikteparseInt(string)
parseInt(string, 10)
bkz. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Çok büyük sayılar olan iki dizeyi birlikte eklemeniz gerekiyorsa, eklemeyi her dize konumunda değerlendirmeniz gerekir:
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;
}
Sayı eklemek için bunu kullanabilirsiniz:
var x = +num1 + +num2;
Deneyin
var x = parseFloat(num1) + parseFloat(num2) ;
veya ihtiyaçlarınıza bağlı olarak:
var x = parseInt(num1) + parseInt(num2) ;
http://www.javascripter.net/faq/convert2.htm
Douglas Crockford'un Javascript: The Good Parts adlı kitabını almak isteyebilirsiniz . Javascript oldukça büyük bir gotchas koleksiyonuna sahiptir! Bu kitap onları açıklığa kavuşturmak için uzun bir yol kat ediyor. Ayrıca bakınız
ve Bay Crockford'un mükemmel denemesi Javascript: Dünyanın En Yanlış Anlaşılan Programlama Dili .
Sayılarla dize olarak işlem yapmak istiyorsanız (sayıların 64 bit'ten büyük olduğu durumlarda olduğu gibi) büyük tamsayı kitaplığını kullanabilirsiniz.
const bigInt = require('big-integer')
bigInt("999").add("1").toString() // output: "1000"
Burada, bunu yapmak için iki seçeneğiniz vardır: -
1. dize numarasını tamsayıya dönüştürmek için tekli artı kullanabilirsiniz.
2.Bunu, numarayı ilgili türe ayrıştırarak da yapabilirsiniz. yani parseInt (), parseFloat () vb.
.
Şimdi burada size örnekler yardımıyla göstereceğim (İki sayının toplamını bulun).
Unary plus operatörünü kullanma
<!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>
Ayrıştırma yaklaşımını kullanma
<!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>
parseInt
Bir dizeyi sayıya ayrıştırmak için kullanabilirsiniz . Nesnelerin güvenli tarafında olmak için, her zaman 10
taban 10'da ayrıştırmak için ikinci argüman olarak geçin.
num1 = parseInt(num1, 10);
num2 = parseInt(num2, 10);
alert(num1 + num2);
Java komut dosyası buggy olduğundan, son cevabınızı float için 16 ondalık basamağa yuvarladığınızdan emin olun.
Örneğin 5 - 7,6 = -2,5999999999999996
@ cr05s19xx, yinelenen bir soru üzerine önerildi:
Sayılar ve toplama söz konusu olduğunda JavaScript biraz komik.
Aşağıdakileri vermek
'20' - '30' = 10; // 10'u '20' + '30' = '2030' olarak döndürür; // Onları dize olarak döndürür document.getElementById öğesinden döndürülen değerler dizedir, bu nedenle toplama veya çıkarma işlemine devam etmeden önce hepsini (işe yarayanı bile) ayrıştırmak daha iyidir. Kodunuz şunlar olabilir:
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;
}
Projemde bunu kullanıyorum. Dizeyi sayı olarak ele almak için + işaretini kullanıyorum (with_interesst değişkeninde)
<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>
Umarım yardımcı olur
document.getElementById(currentInputChoosen).value -= +-100;
Benim durumumda çalışır, benim gibi aynı problemle karşılaşırsanız ve bu dava için bir çözüm bulamazsanız ve bu SO sorusunu bulabilirseniz.
Biraz konu dışı için özür dilerim, ama sadece bu işe yaradığını öğrendiğim gibi, paylaşmaya değer olabileceğini düşündüm.
Kirli bir geçici çözüm mü yoksa yasal mı bilmiyorum.
Bunun gibi kullanabilirsiniz:
var num1 = '20',
num2 = '30.5';
alert((num1*1) + (num2*1)); //result 50.5
Num1'de * 1 uyguladığınızda, dizeyi bir sayıya dönüştürün.
num1 bir harf veya virgül içeriyorsa, NaN değerini 1 ile çarparak döndürür
num1 boşsa, num1 0 değerini döndürür
Saygılarımla!!!
Basit Javascript kodu arıyorsanız ve iki giriş kutusu kullanmak ve iki değerden sayılar eklemek istiyorsanız bunu deneyin. İşte 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>
daha fazla bilgi için lütfen http://informativejavascript.blogspot.nl/2012/12/javascript-basics.html adresini ziyaret edin.