数据返回nan_05 |简单数据类型之Number

c560540249707df71f62740f139976da.png

上一篇文章记录了Undefined、Null、Boolean,这篇文章主要讲解Number类型。主要内容有:Number表示的数据、值的范围、什么是NaN以及数值转换的三种方式。

7ad16390feed3683530f710475673844.png

一、基础知识

Number使用IEEE 754 格式表示整数和浮点数

  • 十进制整数

    let initNum=55
  • 八进制整数

    前缀为0,然后是八进制数字0~7,如果字面量中包含的数值超出了有效范围,会忽略前缀0,后面的数字会被当成十进制数。(在严格模式下无效)

    let octalnum=070 //八进制56
    let octalnum=079 //无效八进制值,当成79
  • 十六进制整数

    前缀0x,然后是十六进制数字0~9以及A~F

    let hexnum=0xA //十六进制10
  • 浮点数

    数值中必须包含小数点,而且小数点后面必须至少有一个数字。

    let floatnum=1.1
    let floatnum=0.1
    let floatnum=.1 //有效 但不推荐

    小数点后没有数字、数值本身就是整数的情况下,会被转化为整数:

    let floatnum=1.   //转为整数1
    let floatnum=10.0 //转为整数10

    对非常大或者非常小的数,浮点值可用科学计算法表示,格式是在数值后加上e + 几次幂,如下:

    let floatnum=3.125e7 //等于31250000

    由于舍入错误,很难测试特定的浮点值。如0.1+0.2实际上会等于0.30000000000000004,所以不建议检测特定的浮点值。

二、值的范围

ECMAScript可以表示的最小值保存在Number.MIN_VALUE中,最大值保存在Number.MAX_VALUE中,如果某个值超过js可以表示的范围,那么该数字会自动转化为Infinity-Infinity

三、NaN

Number有一个特殊的数值叫NaN,意思是Not a Number,即不是数值。用于表示要返回数值的操作失败了,比如0除以任何数都会导致错误:

console.log(0/1) //NaN
console.log(0/0) //NaN
console.log(-0/+0) //NaN

如果分子非0,分母是0,则返回Infinity-Infinity

console.log(5/0)   //Infinity
console.log(-5/0)  //-Infinity

任何涉及NaN的操作始终返回NaN

console.log(NaN/10) //NaN

NaN不等于包含NaN在内的任何值

console.log(NaN==NaN); //false

isNaN()可以判断参数是否“不是数值”:

isNaN(NaN)    //true   不是数值
isNaN(10)     //false  是数值

//它会尝试把参数转为数值
isNaN("10")   //false  (被转化为了10,所以是数值)
isNaN(true)   //false  (被转化为了1,所以是)

//无法转换的则判定为“不是数值”
isNaN("blue") //true

四、数值转换

  • Number():将任何数据转为数值(转整数)

    Number(true)         //1
    Number(10)           //10
    Number(null)         //0
    Number(undefined)    //NaN
    //为字符串时:
    Number("")           //0
    Number("1")          //1
    Number("1.1")        //1.1
    Number("011")        //11   为八进制时,则转为十进制值
    Number("0xf")        //15   为十六进制时,转为与该十六进制值对应的十进制整数
    Number("hello")      //NaN  若为上述外的其他字符,返回NaN
  • parseInt():将字符串转为数值

    parseInt(1)    //1  
    parseInt(1.1)    //1 

    为字符串时:

    //如果第一个字符不是数值、加号或减号,则返回NaN
    parseInt("")     //NaN
    parseInt("a")    //NaN
    //如果第一个字符是数值、加号或减号,则依次往后检测,直到字符串末尾或碰到非数值字符
    parseInt("1234b") //1234
    parseInt("22.5")  //22
    //可以识别八进制、十六进制
    parseInt("0xA")         //0
    parseInt("0xAF",16)     //175  后面的数表示进制数,防止混淆
    parseInt("AF",16)       //175  
    parseInt("AF")          //NaN
    parseInt("10",2)        //2  按二进制
    parseInt("10",8)        //8  按八进制
    parseInt("10",10)       //10 按十进制
    parseInt("10",16)       //16 按十六进制  
  • parseFloat():将字符串转为数值(转小数)

    //忽略字符串开头的0
    parseFloar("09")        //9
    //解析到字符串末尾或者碰到非数值字符为止,其中第一个小数点有效
    parseFloat("0.01")      //0.01
    parseFloat("0.01a")     //0.01
    parseFloat("0.01.11")   //0.01
    parseFloat("1234b")     //1234
    //检测不了十六进制 始终返回0
    parseFloat("0xA")     //0

9d1cd4c73ad8ac184c468e63472bead9.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值