yorickshan
9/25/2018 - 2:39 AM

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

转换函数 parseInt() & parseFloat()

前者把值转换成整数,后者把值转换成浮点数

只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)

parseInt("1234blue"); //returns 1234
parseInt("0xA"); //returns 10
parseInt("22.5"); //returns 22
parseInt("blue"); //returns NaN

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 8
parseInt("010", 8); //returns 8
parseInt("010", 10); //returns 10

parseFloat()方法的字符串必须以十进制形式表示浮点数,因此parseFloat()没有基模式

parseFloat("1234blue"); //returns 1234.0
parseFloat("0xA"); //returns NaN
parseFloat("22.5"); //returns 22.5
parseFloat("22.34.5"); //returns 22.34
parseFloat("0908"); //returns 908
parseFloat("blue"); //returns NaN

强制类型转换

ECMAScript中可用的3种强制类型转换:

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

Boolean(""); //false – empty string
Boolean("hi"); //true – non-empty string
Boolean(100); //true – non-zero number
Boolean(null); //false - null
Boolean(0); //false - zero
Boolean(new Object()); //true – object

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

Number(false) 0
Number(true) 1
Number(undefined) NaN
Number(null) 0
Number( "5.5 ") 5.5
Number( "56 ") 56
Number( "5.6.7 ") NaN
Number(new Object()) NaN
Number(100) 100

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

var a = 333;
a.toString()
"333"
var a = null;
a.toString()
VM527:2 Uncaught TypeError: Cannot read property 'toString' of null
var a = null;
String(a)
"null"

弱类型转换

利用算术运算实现字符串到数字的类型转换,不推荐该方法

var str= '012.345 '
var x = str-0
x
12.345
var str= '012.345 '
var x = str*1
x
12.345