字符串转换成数字的三种方法

最近经常遇到关于类型转换的问题,索性上网搜搜在此总结一篇

js字符转换成数字主要有三种可用的方法:转换函数、强制类型转换、利用js变量弱类型转换。

1. 转换函数

js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行,对其他类型返回的都是NaN

parseInt() 函数

可解析一个字符串,并返回一个整数。

parseInt(string, radix)

radix 可选。表示要解析的数字的基数(进制)。该值介于 2 ~ 36 之间。

如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。

如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

返回值:返回解析后的数字。

*如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN

*如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。

*如果 string 以 0 开头,那么允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。

*如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。

一些示例如下:

parseInt("1234blue"); // returns 1234

parseInt("0xA"); //returns 10

parseInt("22.5"); //returns 22

parseInt("blue"); //returns NaN

parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基数是由parseInt()方法的第二个参数指定的,示例如下:

parseInt("AF",16); //returns 175
parseInt("10",2); //returns 2
parseInt("10",8); //returns 8
parseInt("10",10); //returns 10

 如果十进制数包含前导0,那么最好采用基数10,这样才不会意外地得到八进制的值。例如:

parseInt("010"); //returns 10
parseInt("010", 8); //returns 8
parseInt("010", 10); //returns 10

 parseFloat() 函数可解析一个字符串,并返回一个浮点数。

该函数判断字符串中的首个字符是否是数字,如果是,则对字符串进行解析,然后以数字返回该数字,而不是作为字符串。

*如果参数字符串的第一个字符不能被解析成为数字,则 parseFloat 返回 NaN。

*可以通过调用 isNaN 函数来判断 parseFloat 的返回结果是否是 NaN。

*开头和结尾的空格是允许的。

*如果只想解析数字的整数部分,请使用 parseInt() 方法。

示例如下:

parseFloat("1234blue"); //returns 1234
parseFloat("0xA"); //returns 0
parseFloat("22.5"); //returns 22.5
parseFloat("22.34.5"); //returns 22.34
parseFloat("0908"); //returns 908  //  parseFloat 针对开头为 0 0的处理
parseFloat("blue"); //returns NaN

 parseFloat()方法与parseInt()方法相似,不同之处在于,parseFloat必须以十进制形式表示浮点数,没有基模式。

2.强制类型转换

Boolean(value)——把给定的值转换成Boolean型;

Number(value)——把给定的值转换成数字(可以是整数或浮点数);

String(value)——把给定的值转换成字符串。

3. 利用js变量弱类型转换

举个小例子,一看,就会明白了。

var str = 5332355';

var x = str - 0;

x = x * 1;

利用了js的弱类型的特点,只进行了算术运算,实现了字符串到数字的类型转换,不过这个方法还是不推荐的。存在一些安全问题。

猜你喜欢

转载自1150404757.iteye.com/blog/2317846