首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将两个字符串相加,就像它们是数字一样?

如何将两个字符串相加,就像它们是数字一样?
EN

Stack Overflow用户
提问于 2012-01-24 02:24:32
回答 18查看 235.7K关注 0票数 194

我有两个只包含数字的字符串:

代码语言:javascript
复制
var num1 = '20',
    num2 = '30.5';

我本以为我可以将它们加在一起,但它们却被连接在一起:

代码语言:javascript
复制
num1 + num2; // = '2030.5'

如何强制将这些字符串视为数字?

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2012-01-24 02:26:50

我将首先使用一元加号运算符将它们转换为数字。

代码语言:javascript
复制
+num1 + +num2;
票数 435
EN

Stack Overflow用户

发布于 2012-01-24 02:25:47

MDN docs for parseInt

MDN docs for parseFloat

在parseInt中,基数被指定为10,所以我们是以10为基数。在非严格javascript中,前面加上0的数字被视为八进制。这显然会带来问题!

代码语言:javascript
复制
parseInt(num1, 10) + parseInt(num2, 10) //base10
parseFloat(num1) + parseFloat(num2)

另请参阅ChaosPandion的答案,以获得使用unary operator的有用快捷方式。我已经设置了一个小提琴来显示不同的行为。

http://jsfiddle.net/EtX6G/

代码语言:javascript
复制
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'));
}
票数 23
EN

Stack Overflow用户

发布于 2012-01-24 02:44:29

我建议使用一元加号运算符,强制将最终的字符串作为数字,放在括号内,以使代码更具可读性,如下所示:

代码语言:javascript
复制
(+varname)

所以,在你的例子中是:

代码语言:javascript
复制
var num1 = '20',
    num2 = '30.5';

var sum = (+num1) + (+num2);

// Just to test it
console.log( sum ); // 50.5
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8976627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档