有没有一种方法可以将字符串变量转换为数字?
例如,我有一个字符串:
var str = "1";
我能将它更改为什么?
var str = 1;
有没有一种方法可以将字符串变量转换为数字?
例如,我有一个字符串:
var str = "1";
我能将它更改为什么?
var str = 1;
针对整数,请尝试使用str = parseInt(str, 10)
。
(注意:第二个参数表示解析的进制数;在这种情况下,您的数字将被解析为十进制)
parseFloat
可用于浮点数。一元+
是第三个选项:str = +str
。
然而,需要注意的是,在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
明智地选择 :)
str = new Number(str)
返回一个对象;应该使用 str = Number(str)
。 - Daniel Beckval = str * 1;
- freedomn-m您有几个选项:
一元运算符+
:使用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)
。允许使用小数值,并且始终以十进制(而不是八进制或十六进制)进行计算。对于带有字符串结尾垃圾的内容,parseFloat
和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
parseFloat
代替parseInt
。它们产生相同的数字,但是parseFloat
将覆盖所有正常用例,而不需要基数或if/then检查,只因为可能有一个小数点。 - Mike 'Pomax' Kamermans