有没有办法将变量从字符串转换为数字?
例如,我有
var str = "1";
我可以将其更改为
var str = 1;
答案 0 :(得分:12)
尝试str = parseInt( str, 10 )
( note :第二个参数表示用于解析的基数;在这种情况下,您的数字将被解析为小数)
然而,话虽如此,术语“类型”在JavaScript中使用得非常松散。 你能解释为什么你关心变量的类型吗?
答案 1 :(得分:8)
有三种方法可以做到这一点:
str = parseInt(str, 10); // 10 as the radix sets parseInt to expect decimals
或
str = Number(str); // this does not support octals
或
str = +str; // the + operator causes the parser to convert using Number
明智地选择:)
答案 2 :(得分:3)
最好的方法:
var str = "1";
var num = +str; //simple enough and work with both int and float
你也可以:
var str = "1";
var num = Number(str); //without new. work with both int and float
或
var str = "1";
var num = parseInt(str,10); //for integer number
var num = parseFloat(str); //for float number
DO NOT:
var str = "1";
var num = new Number(str); //num will be an object. typeof num == 'object'
仅对特殊情况使用parseInt,例如
var str = "ff";
var num = parseInt(str,16); //255
var str = "0xff";
var num = parseInt(str); //255
答案 3 :(得分:2)
您有几种选择:
一元+
运算符:value = +value
将使用JavaScript引擎的标准规则将字符串强制转换为数字。该数字可以有一个小数部分(例如+"1.50"
是1.5
)。字符串中的任何非数字(科学表示法的e
除外)都将得出结果NaN
。另外,+""
是0
,这可能并不直观。
var num = +str;
Number
函数:value = Number(value)
。与+
做相同的事情。
var num = Number(str);
parseInt
函数,通常带有一个基数(基数):value = parseInt(value, 10)
。这里的缺点是parseInt
会转换在字符串开头找到的任何数字,但会在字符串的后面忽略非数字,因此parseInt("100asdf", 10)
是100
,而不是NaN
。顾名思义,parseInt
仅解析整数。
var num = parseInt(str, 10);
parseFloat
函数:value = parseFloat(value)
。允许使用小数,并且始终以十进制(永远不能是八进制或十六进制)工作。 parseInt
对字符串末尾的垃圾执行相同的操作,parseFloat("123.34alksdjf")
为123.34
。
var num = parseFloat(str);
因此,请选择适合您的用例的工具。 :-)