Answers:
我将使用一元加号运算符先将其转换为数字。
+num1 + +num2;
用于parseInt的
MDN文档用于parseFloat的MDN文档
在parseInt中,基数指定为10,这样我们就以10为底。在非严格javascript中,以数字开头的数字0
被视为八进制。这显然会引起问题!
parseInt(num1, 10) + parseInt(num2, 10) //base10
parseFloat(num1) + parseFloat(num2)
另请参见ChaosPandion的答案,了解使用一元运算符的有用快捷方式。我设置了一个小提琴来显示不同的行为。
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
更短,可以说更优雅。基本上,一元运算+
符会转换为Number
我建议在圆括号内使用一元加号运算符来强制将最终的字符串视为数字,以使代码更具可读性,如下所示:
(+varname)
因此,在您的情况下,它是:
var num1 = '20',
num2 = '30.5';
var sum = (+num1) + (+num2);
// Just to test it
console.log( sum ); // 50.5
将字符串转换为floats
with parseFloat(string)
或to integers
withparseInt(string)
parseInt(string, 10)
请参阅developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…–
如果需要将两个非常大的字符串加在一起,则需要在每个字符串位置评估加法:
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;
}
尝试
var x = parseFloat(num1) + parseFloat(num2) ;
或者,根据您的需要:
var x = parseInt(num1) + parseInt(num2) ;
http://www.javascripter.net/faq/convert2.htm
您可能想读一本 Douglas Crockford 的书《Javascript:The Good Parts》。Javascript有相当多的陷阱!这本书对澄清它们大有帮助。也可以看看
以及Crockford先生的出色论文《Javascript:世界上最被误解的编程语言》。
如果要使用数字作为字符串执行操作(例如,数字可以容纳大于64位的情况),则可以使用big-integer库。
const bigInt = require('big-integer')
bigInt("999").add("1").toString() // output: "1000"
在这里,您有两种选择可以做到这一点:
1.您可以使用一元加号将字符串号转换为整数。
2.您也可以通过将数字解析为相应的类型来实现此目的。即parseInt(),parseFloat()等
。
现在,我将在示例的帮助下向您展示(找到两个数字的和)。
使用一元加运算符
<!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>
使用解析方法-
<!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>
function sum(){
var x,y,z;
x = Number(document.getElementById("input1").value);
y = Number(document.getElementById("input2").value);
z = x + y;
document.getElementById("result").innerHTML = z ;
}
由于Java脚本有错误,因此请确保将最终答案四舍五入到小数点后少于16位。
例如5-7.6 = -2.5999999999999996
在重复的问题上建议使用@ cr05s19xx:
当涉及数字和加法时,JavaScript有点有趣。
提供以下内容
'20'-'30'= 10; //返回10作为数字'20'+'30'='2030'; //以字符串形式返回它们从document.getElementById返回的值是字符串,因此最好在进行加法或减法之前将它们(甚至是可行的)解析为数字。您的代码可以是:
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;
}
我在项目中使用它,我使用+符号将字符串视为数字(在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>
希望能帮助到你
如果您正在寻找简单的Javascript代码,并且想要使用两个输入框并从两个值中添加数字,请尝试此操作。这是代码。
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>
有关更多详细信息,请访问http://informativejavascript.blogspot.nl/2012/12/javascript-basics.html