繁体   English   中英

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

[英]Javascript: Converting String to Number?

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

例如,我有

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

做出明智的选择 :)

你有几个选择:

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

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

最好的方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM