有没有办法将变量从字符串转换为数字?
例如,我有
var str = "1";
我可以改成
var str = 1;
有没有办法将变量从字符串转换为数字?
例如,我有
var str = "1";
我可以改成
var str = 1;
尝试 str = parseInt( str, 10 )
(注意:第二个参数表示解析的基数;在这种情况下,您的数字将被解析为小数)
然而,话虽如此,“类型”一词在 JavaScript 中的使用相当松散。你能解释一下你为什么关心变量的类型吗?
有三种方法可以做到这一点:
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
做出明智的选择 :)
您有多种选择:
一元运算+符: value = +value将使用 JavaScript 引擎的标准规则将字符串强制转换为数字。该数字可以具有小数部分(例如,+"1.50"是1.5)。字符串中的任何非数字(e科学记数法除外)都会生成结果NaN。此外,+""is 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);
因此,请选择适合您用例的工具。:-)
最好的方法:
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
别:
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