Javascript:将字符串转换为数字?

时间:2010-05-16 13:25:22

标签: javascript variables

有没有办法将变量从字符串转换为数字?

例如,我有

var str = "1";

我可以将其更改为

var str = 1;

4 个答案:

答案 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);
    

因此,请选择适合您的用例的工具。 :-)