如何将两个字符串作为数字相加?

IT技术 javascript
2021-01-18 03:20:23

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

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

我原以为我可以将它们加在一起,但它们被连接起来了:

num1 + num2; // = '2030.5'

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

6个回答

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

+num1 + +num2;
但是,如果这些数字大于 2^53,则必须创建一个函数来添加字符串的各个部分,并将结转到循环中的每个部分。:D
2021-03-18 03:20:23
很酷。感谢分享这个。我发现这篇文章描述了一元加运算符以及它对不同数据类型的一些有用影响。xkr.us/articles/javascript/unary-add
2021-03-23 03:20:23
另请参阅下面的@NicholasCarey 答案:stackoverflow.com/a/8976770/1579667
2021-04-04 03:20:23
有没有更简单的方法来做到这一点?(免责声明:这就是我一直这样做的方式。)
2021-04-06 03:20:23
这给了我一个错误,所以我用 parseFloat() 代替。
2021-04-08 03:20:23

parseInt 的
MDN 文档 parseFloat 的 MDN 文档

在 parseInt 中基数被指定为 10,所以我们在基数 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'));
}
此外,您确实应该将基数指定为 10。
2021-03-20 03:20:23
当您执行 parseInt 时,您不会丢失 .5 位小数吗?
2021-04-01 03:20:23
就其value而言, parseInt 和 parseFloat 是实验性的,并没有在浏览器中得到广泛支持——几乎不支持移动设备。
2021-04-04 03:20:23
如果您有小数,请使用 parseFloat()。:)
2021-04-06 03:20:23
而且+num1 + +num2更短,可以说更优雅。基本上一元运算+符转换为Number
2021-04-09 03:20:23

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

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

将字符串转换为floatswithparseFloat(string)或 to integerswithparseInt(string)

或者(如果您只想要整数)parseInt(string, 10)请参阅developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
2021-03-17 03:20:23