如何添加两个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的使用一元运算符的有用快捷方式的答案。 我已经设置了一个小提琴,以显示不同的行为。
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