js基础知识四(Number()函数、parseInt()函数、parseFloat()函数)

js基础知识四js基础知识四(Number()函数、parseInt()函数、parseFloat()函数)----来自李炎恢老师js讲义

3个函数可以把非数值转换为数值:Number()parseInt()parseFloat()Number()函数是转型函数,可以用于任何数据类型,而另外两个则专门用于把字符串转成数值。

alert(Number(true));                  //1Boolean类型的truefalse分别转换成10

alert(Number(25));                            //25,数值型直接返回

alert(Number(null));                  //0,空对象返回0

alert(Number(undefined));         //NaNundefined返回NaN

 

如果是字符串,应该遵循一下规则:

 

1.只包含数值的字符串,会直接转成成十进制数值,如果包含前导0,即自动去掉。

alert(Number('456'));                  //456

alert(Number('070'));                  //70

 

2.只包含浮点数值的字符串,会直接转成浮点数值,如果包含前导和后导0,即自动去掉。

alert(Number('08.90'));              //8.9

 

3.如果字符串是空,那么直接转成成0

alert(Number(''));                       //0

 

4.如果不是以上三种字符串类型,则返回NaN

alert('Lee123');                           //NaN

 

5.如果是对象,首先会调用valueOf()方法,然后确定返回值是否能够转换成数值。如果转换的结果是NaN,则基于这个返回值再调用toString()方法,再测试返回值。

var box = {

       toString: function () {

              return '123';                 //可以改成return 'Lee'查看效果

       }

};

alert(Number(box));                   //123

 

由于Number()函数在转换字符串时比较复杂且不够合理,因此在处理整数的时候更常用的是parseInt()

alert(parsetInt('456Lee'));           //456,会返回整数部分

alert(parsetInt('Lee456Lee'));             //NaN,如果第一个不是数值,就返回NaN

alert(parseInt('12Lee56Lee'));            //12,从第一数值开始取,到最后一个连续数值结束

alert(parseInt('56.12'));               //56,小数点不是数值,会被去掉

alert(parseInt(''));                       //NaN,空返回NaN

 

parseInt()除了能够识别十进制数值,也可以识别八进制和十六进制。

alert(parseInt('0xA'));                 //10,十六进制

alert(parseInt('070'));                  //56,八进制(在IE下会被识别为八进制,在fix下会识别为8进制)

alert(parseInt('0xALee'));            //10,十六进制,Lee被自动过滤掉

 

ECMAScriptparseInt()提供了第二个参数,用于解决各种进制的转换。

alert(parseInt('0xAF'));              //175,十六进制

alert(parseInt('AF',16));                     //175,第二参数指定十六进制,可以去掉0x前导

alert(parseInt('AF'));                   //NaN,理所当然

alert(parseInt('101010101',2));    //314,二进制转换

alert(parseInt('70',8))                  //56,八进制转换

 

parseFloat()是用于浮点数值转换的,和parseInt()一样,从第一位解析到非浮点数值位置。

alert(parseFloat('123Lee'));         //123,去掉不是别的部分

alert(parseFloat('0xA'));                     //0,不认十六进制

alert(parseFloat('123.4.5'));         //123.4,只认一个小数点

alert(parseFloat('0123.400'));              //123.4,去掉前后导

alert(parseFloat('1.234e7'));         //12340000,把科学技术法转成普通数值,会省略后边两个0

 

总结:parseInt中:空字符是NaN,专门用于把字符串转成数值。

         Number中:空字符是0,可以用于任何数据类型转化为数值。

alert(parseInt('070')) 70/56;八进制(在IE下会被识别为八进制,在火狐下会识别为8进制)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值