如何添加两个string,就像他们是数字?

我有两个string只包含数字:

var num1 = '20', num2 = '30.5'; 

我会期望我可以将它们加在一起,但它们被连接在一起:

 num1 + num2; // = '2030.5' 

我如何强制这些string被视为数字?

我会使用一元加运算符将其转换为数字。

 +num1 + +num2; 

MDN文档parseInt
MDN文档parseFloat

在parseInt中,基数被指定为十,所以我们在10的基础上。在非严格javascript中,前缀为0的数字被视为八进制数。 这显然会造成问题!

 parseInt(num1, 10) + parseInt(num2, 10) //base10 parseFloat(num1) + parseFloat(num2) 

另请参阅ChaosPandion的使用一元运算符的有用快捷方式的答案。 我已经设置了一个小提琴,以显示不同的行为。

http://jsfiddle.net/EtX6G/

 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')); } 

我build议使用一元加运算符来强制最终的string被视为数字,在括号内,使代码更具可读性,如下所示:

 (+varname) 

所以,你的情况是这样的:

 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); 

将string转换为使用parseFloat(string) floats或使用parseInt(string) integers

你可以使用它来添加数字:

 var x = +num1 + +num2; 

尝试

 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有一个相当大的gotchas collecon! 这本书去澄清他们很长的路要走。 也可以看看

和克罗克福德先生的优秀文章, Javascript:世界上最容易被误解的编程语言 。

我总是减去零。

 num1-0 + num2-0; 

当然,一元运算符方法是less一个字符,但不是每个人都知道一元运算符是什么,或者不知道什么时候不知道它是什么。

您可以使用parseInt将stringparsing为数字。 为了安全起见,总是把第10个参数作为第10个参数来parsing。

 num1 = parseInt(num1, 10); num2 = parseInt(num2, 10); alert(num1 + num2); 

使用parseFloat方法将stringparsing为浮点数字:

 parseFloat(num1) + parseFloat(num2) 

确保你的最终答案小于十六个小数位的浮点数,因为java脚本是越野车。

例如5 – 7.6 = -2.5999999999999996

我在我的项目中使用这个。我使用+符号来处理string作为一个数字(在with_interesstvariables)

 <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> 

希望它有帮助

你可以这样使用:

 var num1 = '20', num2 = '30.5'; alert((num1*1) + (num2*1)); //result 50.5 

在num1中应用* 1时,将string转换为数字。

如果num1包含字母或逗号,则返回NaN乘以1

如果num1为空,则num1返回0

亲切的问候!!!

如果你想用数字作为string进行操作(比如数字大于64位的情况下),你可以使用big-integer库。

 const bigInt = require('big-integer') bigInt("999").add("1").toString() // output: "1000" 

试试这个,如果你正在寻找简单的Javascript代码,并希望使用两个input框,并从两个值中添加数字。 这是代码。

  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