Number、parseInt、parseFloat转整数的区别

一、Number()

把任何数据类型的值转换为数值

  • 如果是Boolean类型,true和false值将分别被转换为1和0。
  • 如果是Number类型,只是简单的传入和返回。
  • 如果是null值,返回0。
  • 如果是undefined值,返回NaN
  • 如果是String类型:
    a. 如果字符串中只包含数字时,将其转换为十进制数值,忽略前导0,类似调用parseInt()
    b. 如果字符串中包含有效浮点格式,如’1.1’,将其转换为对应的浮点数字,忽略前导0,类似调用parseFloat()
    c. 如果字符串中包含有效的十六进制格式,如’0xf’,将其转换为相同大小的十进制数值,类似调用parseInt()
    d. 如果字符串为空,将其转换为0
    e. 如果字符串中包含除上述格式之外的字符,则将其转换为NaN
  • 如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后再依照前面的规则转换返回的字符串值。

示例:

Number函数主要是用于将任何其他数据类型的值转化为数值类型。
转换规则如下:
1、如果是布尔类型的值,true转化为1,false转化为0。
console.log(Number(true))   //1
console.log(Number(false))  //0
2、如果是简单的数值型,则直接返回。
3、如果是null,则直接转化为0.
4、如果是undefined,则直接转化为NaN.
5、如果是字符串,则去掉开头和结尾的空格部分,如果仍然存在其他非数字字符,则直接返回NaN,否则返回数字。
console.log(Number("    10"))    //10
console.log(Number("    10s"))   //NaN
6、如果是字符串,前面存在0或者(+-)号。将其转换为数字。
console.log(Number("+000001")) //1
console.log(Number("-1121"))   //-1121
7、如果在其中存在十六进制的字符串,则将其转化为十进制数字。
console.log(Number("0xf"))  //15
8、如果是空字符串,则直接转换为0。
console.log(Number(""))    //0
9、如果除了以上内容的字符串,还存在其他字符串,则直接返回NaN。
10、如果是对象类型的数据,则首先调用valueOf(),则再按照上述进行转换。如果转换的结果为NaN,则调用toString()方法再进行转换,目的就是将对象转化为基本数据类型。

二、parseInt()

parseInt():把字符串转换为整数值

  • parseInt()函数在转换字符串时,会忽略字符串前面的空格,直到找到第一个非空格字符。如果第一个字符不是数字或者负号,parseInt() 就会返回NaN,同样的,用parseInt() 转换空字符串也会返回NaN。
  • 如果第一个字符数字字符,parseInt() 会继续解析遇到了一个非数字字符停止解析。
  • parseInt()方法还有基模式(默认十进制),可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二个参数指定的,所以要解析十六进制的值,当然,对二进制、八进制,甚至十进制(默认模式),都可以这样调用parseInt()方法。
var num1 = parseInt("AF",16);           //175
var num2 = parseInt("AF");            //NaN
var num3 = parseInt("10",2);              //2  (按照二进制解析)

示例:

parseInt()可以将字符串转化为一个整数,与Number()相比,parseInt()还可以转化为字符串开头为数字的字符串。
其转换的规则如下:
1、如果字符串开头不是数字或者正负号,则直接返回NaN(所以当为空字符串时,则直接返回NaN)
console.log(parseInt(""))     //NaN
console.log(parseInt("-10"))  //-10
console.log(parseInt("+10"))  //10
2、如果开头是数字或者正负号,则继续解析接下来的字符,直到找到不是该字符的字符串。
console.log(parseInt("1000de"))  //1000
3、如果在开头跟着是0x后面是数字字符换,则会将其看做十六进制,转化为十进制。
console.log(parseInt("0xfss"))   //15
4、parseInt()的第二个参数,表示使用多少进制来解析。
console.log(parseInt("11", 16))   //17
console.log(parseInt("11", 2))    //3
console.log(parseInt("11", 8))    //9
5、parseInt()中传入小数时,则从小数点处断开。
console.log(parseInt("11.112"))  //11
console.log(parseInt("-11.22"))  //-11

三、parseFloat()

  • parseInt() 函数类似,区别是遇到了二个非数字字符停止解析
  • parseFloat() 只能解析十进制,因此它没有第二个参数指定基数的用法

如果字符串中包含的是一个可解析为正数的数(没有小数点,或者小数点后都是零),parseFloat()会返回整数。

示例:

parseFloat()可以解析字符串为浮点数,大体和parseInt()一致。
1、浮点数第一个小数点有效,第二个小数点就没有效了。
console.log(parseFloat("100.11.11"))  //100.11
2、如果传入的参数中包含可解析的整数,不包含小数,则直接返回整数。
console.log(parseFloat("10212"))   //10212
console.log(parseFloat("0xA"))     //0
console.log(parseFloat("0908.5")); //908.5

parseInt() 和parseFloat() 的区别在于:

parseFloat() 所解析的字符串中第一个非数字字符是有效的,而parseInt() 遇到第一个非数字字符会停止解析

parseFloat() 只有十进制转换,parseInt() 第二个参数可以设置基数,按照这个基数的进制来转换。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值