JavaScript——数值

版权声明:未经同意不得转载 https://blog.csdn.net/qq_42707446/article/details/83028034

JavaScript——数值

  1. 整数和浮点数

    JacaScript内部,所有的数都是64位浮点数,当某些运算只有整数才能完成,64位小数会自动转换为32位整数,再进行运算

    由于浮点数不是精确地值,所以在进行运算时要特别小心

    0.1 + 0.2 === 0.3
    
    // false
    0.3 / 0.1
    
    // 2.9999999999999996
    (0.3 - 0.2) === (0.2 - 0.1)
    
    // false
  2. 数值精度

    每个数都是64位小数,第一位是0或者1,用来表示正负,0为正,1为负

    第一位是符号位

    第二位到第十二位是指数部分(共11位)

    第十三位到第六十三位是小数部分(共52位)

  3. 数值范围

    JavaScrip能够表示的数的范围是2的负1024次方到2的正1024次方(开区间)超出这个范围则不会显示

    Math.pow(2, 1024) // Infinity
    
    Math.pow(2, -1075) // 0
  4. 数值的表示法

    当以下两种情况时,JavaScript会自动转化为科学计数法

    1. 小数点前的数字多余21个

      1234567890123456789012
      
      // 1.2345678901234568e+21
      123456789012345678901
      
      // 123456789012345680000
    2. 小数点后大于五个零

      0.0000003 // 3e-7
      
      // 否则,就保持原来的字面形式
      0.000003 // 0.000003
  5. 数值的进制

    十进制:我们平时正常用的数字

    二进制:前缀0b或0B

    八进制:前缀0O或0o 或者只用了前导0,且只用了0~7的八个阿拉伯数字

    十六进制:前缀0x或0X

  6. 特殊数值

    1. 正零和负零

      除了正零和负零做分母的时候值不同,其他时候正零和负零是一样的

      (1 / +0) === (1 / -0) // false

      是因为除以正零得到+Infinity,除以负零得到-Infinity,这两者是不相等的

    2. NaN 数据类型依然属于Number

      5 - 'x' // NaN

      0除以0也会得到NaN

      NaN不等于任何值,包括它本身。
      NaN === NaN // false

      NaN在布尔值中是false

      NaN在与任何数(包括他自己)运算时都显示的是NaN

    3. infinity

      Infinity与null计算时,null会转成0,等同于与0的计算。

      Infinity与undefined计算,返回的都是NaN。

  7. 与数值相关的全局方法

    1. parselnt()

      parseint用于将字符串转化为整数

      如果parseInt的参数不是字符串,则先转为字符串,再将字符串转换为整数

      parseInt(1.23) // 1 
      // 等同于
      parseInt('1.23') // 1

      字符串转为整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分。

      parseInt('8a') // 8  
      parseInt('12**') // 12  
      parseInt('12.34') // 12   
      parseInt('15e2') // 15   
      parseInt('15px') // 15

      如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回NaN

      parseInt('abc') // NaN   
      parseInt('.3') // NaN   
      parseInt('') // NaN   
      parseInt('+') // NaN   
      parseInt('+1') // 1

      所以,parseInt的返回值只有两种可能,要么是一个十进制整数,要么是NaN。

      进制转换

      parseInt方法还可以接受第二个参数(2到36之间)这个整数只有在2到36之间,才能得到有意义的结果,超出这个范围,则返回NaN。如果第二个参数是0、undefined和null,则直接忽略。

      parseInt('1000') // 1000     
      // 等同于 
      parseInt('1000', 10) // 1000
      
      parseInt('1000', 2) // 8  
      parseInt('1000', 6) // 216   
      parseInt('1000', 8) // 512

      如果字符串包含对于指定进制无意义的字符,则从最高位开始,只返回可以转换的数值。如果最高位无法转换,则直接返回NaN。

      parseInt('1546', 2) // 1 
      parseInt('546', 2) // NaN
    2. parseFloat()

      将字符串转化为浮点数

      parseFloat('3.14') // 3.14
      
      parseFloat('314e-2') // 3.14
      
      parseFloat('0.0314E+2') // 3.14

      如果字符串包含不能转为浮点数的字符,则不再进行往后转换,返回已经转好的部分。

      parseFloat('3.14more non-digit characters') // 3.14
      
      parseFloat('\t\v\r12.34\n ') // 12.34

      如果参数不是字符串,或者字符串的第一个字符不能转化为浮点数,则返回NaN。

    3. isNaN()

      判断一个数是否为NaN

      isNaN(NaN) // true 
      isNaN(123) // false
    4. isFinite

      isFinite返回一个布尔值,表示一个值是否为正常的数值

      isFinite(Infinity) // false 
      isFinite(-Infinity) // false 
      isFinite(NaN) // false 
      isFinite(undefined) // false 
      isFinite(null) // true 
      isFinite(-1) // true

      参考链接:JavaScript 标准参考教程(alpha)

猜你喜欢

转载自blog.csdn.net/qq_42707446/article/details/83028034