[英]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.