详解Js中非数值转化为数值的四种方法

详解Js中非数值转化为数值的四种方法

大一暑假:2022-8-11

1.Number()方法

语法:Number(object)

作用:对象的值转换为数字。如果对象的值无法转换为数字,那么 Number() 函数返回 NaN

转化规则:

1.object为数字:只是单纯的传入和返回。

console.log(Number(1)) // 1
console.log(Number(1.314)) //1.314

2.object为布尔值,true=>1和false=>0.

console.log(Number(true)) //1
console.log(Number(false)) //0

3.object为null,=>0

console.log(Number(null)) //0

4.object为undefined,=>NaN

console.log(Number(undefined)) //NaN

5.object为字符串:忽略前后空格,碰到第一个非数字字符为止,空字符串返回 0

  • 纯数字字符串,直接转化为数字
console.log(Number("123")) // 123
console.log(Number("1.16"))//1.16
console.log(Number("0x12")) //18  0x表示16进制
  • 字符串中有非数字的内容,则转换为 NaN
console.log(Number("123 456")) //NaN 
console.log(Number("123aaa")) //NaN 
console.log(Number("1.12.36")) //NaN
  • 如果字符串是一个空串或者是一个全是空格的字符串,则转换为 0
console.log(Number("")) //0
console.log(Number("    ")) //0

6.object为对象:调用内部 ToPrimitive(value, Number),如果是 Date 对象,返回从 1970年1月1日至Date的毫秒数

console.log(Number({})) //NaN
console.log(Number(new Date())) //1660207696675

2.parseInt()方法

语法:parseInt(string, radix)

参数:string 必需。要被解析的字符串。redix 可选。表示要解析的数字的基数,不是目标的进制。该值介于 2 ~ 36 之间。

作用:解析一个字符串,并返回一个十进制整数

注意

  • 只有字符串中的第一个数字会被返回。
  • 开头和结尾的空格是允许的。
  • 如果字符串的第一个字符不能被转换为数字,那么 parseInt() 会返回 NaN
  • 默认要被解析的字符串是十进制的基数。
console.log(parseInt("10")) //10 
console.log(parseInt("10.33")) // 10
console.log(parseInt("34 56 78")) //34
console.log(parseInt(" 10 ")) //10
console.log(parseInt("40 years")) //40
console.log(parseInt("he is 40")) //NaN
console.log(parseInt("")) //NaN

3.parseFloat()方法

语法:parseFloat(string)

参数:string 必需。要被解析的字符串。

作用:解析一个字符串,并返回一个十进制浮点数

注意

  • 字符串中只返回第一个数字。
  • 开头和结尾的空格是允许的。
  • 如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN
console.log(parseFloat("10")) //10
console.log(parseFloat("10.33")) //10.33
console.log(parseFloat("34 56 78")) //34
console.log(parseFloat("  60  ")) //60
console.log(parseFloat("40 years")) //40
console.log(parseFloat("he was 40")) //NaN
console.log(parseFloat("")) //NaN

三者区别

  • Number():可以用于任何数据类型;parseInt()parseFloat():主要针对把字符串转换成数值。
  • parseInt()存在基模式,parseFloat()不存在。

4.隐式转换

  1. 数学运算:使用运算符的其中一种,在不改变原值的情况下,和number类型的值做运算。
  • 若字符串中的是纯数字,则直接返回该数值
  • 若字符串中不是纯数字,则返回NaN
  • 若字符串为空,则返回0
  • 转换布尔型,则true返回1,false返回0
  • 转换undefined,则返回NaN
console.log("123"-2) //121
console.log("123aa"-2) //NaN
console.log(""-2) //-2
console.log(false-2) //-3
console.log("true"-2) //-1
console.log("undefined"-2) //NaN
  1. 添加+、-
console.log(+"123") //123
console.log(-"10") //10
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值