我有两个只包含数字的字符串:
var num1 = '20',
num2 = '30.5';
我原以为我可以将它们加在一起,但它们被连接起来了:
num1 + num2; // = '2030.5'
如何强制将这些字符串视为数字?
我有两个只包含数字的字符串:
var num1 = '20',
num2 = '30.5';
我原以为我可以将它们加在一起,但它们被连接起来了:
num1 + num2; // = '2030.5'
如何强制将这些字符串视为数字?
我会先使用一元加运算符将它们转换为数字。
+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'));
}
我建议使用一元加运算符,强制将最终字符串视为数字,在括号内使代码更具可读性,如下所示:
(+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);
将字符串转换为floats
withparseFloat(string)
或 to integers
withparseInt(string)