1.parseInt()函数
parseInt() 函数可解析一个字符串,并返回一个整数。
parseInt(string, radix)
它会忽略字符串前面的空格,直至找到第一个非空格字符。
如果第一个字符不是数字字符或者负号,parseInt() 函数就会返回 NaN;
也就是说,用 parseInt() 函数转换空字符串会返回 NaN。
如果第一个字符是数字字符,parseInt() 函数会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符。
例如,“1234blue” 会被转换为 1234,因为 “blue” 会被完全忽略。类似地,“22.5”会被转换为 22,因为小数点并不是有效的整数字符
console.log(parseInt('0')) //0 只有0的时候才是0,其他不是数字的时候都是NaN
console.log(parseInt('10')) //10
console.log(parseInt('s10')) //NaN
console.log(parseInt(' 10px ')) //10
console.log(parseInt(' 10 10 ')) //10
console.log(parseInt("10.33"))//10
console.log(parseInt("34 45 66"));//34
console.log(parseInt(" 60 ") ); //60
console.log(parseInt("40 years")); //40
console.log(parseInt("He was 40 60") );//NaN
console.log(parseInt("-60") );//-60
第二个参数:表示要解析的数字的基数,通俗的说就是数字的进制,比如二进制、八进制或者十六进制。该值介于2 ~ 36之间。默认为 10进制。
//当参数 type 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。
//radix 的取值范围是 2~36,如果 radix 为 1 或 radix>36 ,转换结果将是 NaN ,如果 radix 为 0 或其它值将被忽略,radix 默认为 10 。
//举例,如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。
//如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。
console.log(parseInt('034'))//34
console.log(parseInt('0x34'))//52
console.log(parseInt('12'))//12
console.log(parseInt())//NaN
console.log(parseInt(''))//NaN console.log(Number(''));//0
console.log(parseInt("010",10))//10
console.log(parseInt("010",2))//2
console.log(parseInt("010",8))//8
console.log(parseInt("010",16))//16
/*
像 "080"这种字符串,有些浏览器会当成8进制解析,有些会当成10进制解析
var a = "080";
a = parseInt(a);
console.log(a);//80
这个时候
a = “070”;
a = parseInt(a, 10)//10表示10进制
a = parseInt(a, 8)//10表示8进制
可以再parseInt()中传递一个第二个参数,来指定数字的进制
*/
/*
如果对非string使用parseInt()或者parseFloat()
它会先将其转换为string,然后在操作
*/
console.log(parseInt(undefined))//NaN
console.log(parseInt(null))//NaN
console.log(parseInt(true))//NaN
console.log(parseInt(true))//NaN
console.log(parseInt({name:'why', age: 18}))//NaN
2.parseFloat()函数
parseFloat(string)
parseFloat 是全局函数,不属于任何对象。
parseFloat() 函数可解析一个字符串,并返回一个浮点数。
该函数指定字符串中的首个字符是否是数字。如果是,则对字符串进行解析,如果在解析过程中遇到了正负号(+ 或 -)、数字 (0-9)、小数点,或者科学记数法中的指数(e 或 E)以外的字符,则它会忽略该字符以及之后的所有字符,返回当前已经解析到的浮点数。同时参数字符串首位的空白符会被忽略。
如果参数字符串的第一个字符不能被解析成为数字,则 parseFloat 返回 NaN。
开头和结尾的空格是允许的。
console.log(parseFloat('3.14'));//3.14
console.log(parseFloat('120px'));//120
console.log(parseFloat('rem120px'));//NaN
var a = ' 1234.567 ';
console.log(parseFloat(a)); //1234.567
var a = "1234.567px1233";
console.log(parseFloat(a)); 1234.567
console.log(parseFloat('10'))//10
console.log(parseFloat('10.00'))//10
console.log(parseFloat('10.0001'))//10.0001
console.log(parseFloat('10.33'))//10.33
console.log(parseFloat('He was 40'))//NaN
/*
如果对非string使用parseInt()或者parseFloat()
它会先将其转换为string,然后在操作
*/
console.log(parseFloat(undefined))//NaN
console.log(parseFloat(null))//NaN
console.log(parseFloat(true))//NaN
console.log(parseFloat(true))//NaN
console.log(parseFloat({name:'why', age: 18}))//NaN
3.Number()函数
Number(object)
Number() 函数把对象的值转换为数字
总结:
空字符串,都是空格的字符串--》0
true--》 1 false--》0
undefined--》nan
null--》0
数组记法:arr.length<=1可以正常转,arr.length>1全部NaN
[]//0
[' '],//0
[''],//0
[5],//5
['5'],//5
[1,2,3],//NaN
{},//NaN 其他对象全部NaN
/*
字符串--》数字
1.先去除首尾空格,看是不是纯数字。如果是纯数字,直接转换成数字
2.如果字符字符串中有非数字内容,则转换成NaN
3.如果字符串是一个空串,或者是一个全是空格的字符串,则转换成0;
*/
console.log(Number('123'));//123
console.log(Number('1.23'))//1.23
console.log(Number('12'));//12
console.log(Number(' 12'));//12
console.log(Number('12a'));//NaN
console.log(Number('s12b'));//NaN
console.log(Number('123px'))//NaN
console.log(Number(''));//0
console.log(Number(' '));//0 用 parseInt() 函数转换空字符串会返回 NaN
/*
布尔---》数字
1.true转成1
2.false转成0
*/
console.log(Number(true))//1
console.log(Number(false))//0
/*
null--》数字
结果就是数字0
undefined ---》
数字NaN
*/
console.log(Number(null)) //0
console.log(Number(undefined))//NaN
//对象
//数组记法:arr.length<=1可以正常转,arr.length>1全部NaN
//1、下边情况可以转数字
Number([]),//0
console.log([].length)//0
Number([' ']),//0
console.log([' '].length)//1
Number(['']),//0
Number([5]),//5
Number(['5']),//5
console.log(Number([1,2,3])),//NaN
//2、String实例对象(下边的newString使用时会把参数转化成字符串,然后返回一个String的实例对象。如果参数不是字符串却有字母,会当变量使用,如new String(12a)会报错)
Number(new String(123)),//123
Number(new String('45a')),//NaN
Number(new String([Infinity])),//Infinity
//3、其他对象全部NaN
Number([1,2]),//NaN
Number([,5]),//NaN
Number({}),//NaN
(6条消息) Javascript的Number()总结_big qier~的博客-CSDN博客_javascript number()
4.隐士转换 (减 乘 除) 用的很少
1.数字和字符串相减,字符串转成数字;如果字符串不是纯数字就会转成NaN;
2.两个字符串相减也先转成数字。
https://blog.csdn.net/qq_51781439/article/details/119875986
console.log(10 - '20')//-10
console.log(10 - 'one')//NaN
console.log('10' - '100')//-90
//数字和字符串相乘,字符串转成数字;
//如果字符串不是纯数字就会转成NaN;
//两个字符串相乘也先转成数字。(除法类似)
console.log(10 * '20')//200
console.log(10 * 'one')//NaN
console.log('10' * '100')//1000
//数字和字符串大小比较,字符串转成数字;
//如果字符串不是纯数字就会输出false;
//两个字符串比较也先转成数字。
var a = 10 < '20';
var b = 10 > 'one';
var c = '10' > '100';
console.log(a,b,c) //true false flase
网友评论