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

IT技术 javascript variables
2021-02-03 19:33:53

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

例如,我有

var str = "1";

我可以改成

var str = 1;
4个回答

尝试 str = parseInt( str, 10 )

注意:第二个参数表示解析的基数;在这种情况下,您的数字将被解析为小数)

然而,话虽如此,“类型”一词在 JavaScript 中的使用相当松散。你能解释一下你为什么关心变量的类型吗?

@Warrantica:好的,这似乎是合法的。让我困惑的是“改变变量的类型”这个表达。这不是人们通常想要做的。对于您的问题,更正确的措辞是“如何将字符串转换为数字”?
2021-03-16 19:33:53
不,基数不能省略,也没有默认值。如果您省略它,vm 将尝试猜测导致例如的基数。010 不是解释为 10,而是解释为 8。
2021-03-24 19:33:53
谢谢,费奥多尔。我正在尝试使用正则表达式从字符串中提取数字,它返回一个字符串,因此我想将其转换为数字以便可以对其进行处理。
2021-04-01 19:33:53
我已经对基数进行了快速搜索。“以 0 开头表示八进制”已贬值,但如果以“0x”开头,则它会解释为十六进制。
2021-04-09 19:33:53

有三种方法可以做到这一点:

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

做出明智的选择 :)

另外一个选择: val = str * 1;
2021-03-14 19:33:53
str = new Number(str)返回一个对象;那应该是str = Number(str)
2021-03-17 19:33:53
我之前的问题是错误的。 bclary.com/2004/11/07/#a-11.4.6 + 运算符在其他语言中没有它的作用(foo > 0 ? foo : -foo;)
2021-03-29 19:33:53
@Consp ...我没有关注你,有什么相关性?但是对于您的示例代码,您需要使用 -- 或 ++
2021-03-31 19:33:53

您有多种选择:

  • 一元运算+符: 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