欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript中的Number数字类型学习笔记

程序员文章站 2023-11-23 15:37:10
使用ieee754格式来表示整数和浮点数值。 浮点数值:该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。浮点数值需要内存空间是保存整数值的两倍。最高精度是1...

使用ieee754格式来表示整数和浮点数值。
浮点数值:该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。浮点数值需要内存空间是保存整数值的两倍。最高精度是17为小数,但在进行算术运算时其精度远远不如整数。

JavaScript中的Number数字类型学习笔记

各种数值类型:十进制,八进制(在严格模式下无效),十六进制
八进制字面量的第一位必须是0,然后是八进制数字序列(0~7)。如果字面值中的数值超出了范围,那么前导0将被忽略,后面的数值将被当做十进制数来解析

070//56
079//79

十六进制字面值的前两位必须是0x,后跟十六进制数字(0~9及a~f)。其中字母a~f可大小也可小写

0xa//10

在进行算术计算时,所有以八进制和十六进制表示的数值最终都将被转换为十进制数值

数值范围:

JavaScript中的Number数字类型学习笔记

如果某次计算中的结果中得到了一个超出javascript数值范围的值,那么这个值将被转换为特殊的infinity值,该值无法参与下一次的计算,因为infinity是无法参与计算的数值。如果这个数是正数则被转换为infinity(正无穷),如果这个数是负数则被转换为-infinity(负无穷)。

-10/0//-infinity
10/0//infinity

JavaScript中的Number数字类型学习笔记

isinfinite()判断一个数是否有穷。

var result = number.max_value + number.max_value
console.log(isfinity(result));//false

nan

console.log(nan === nan)//false

0/0//nan

isnan:接收一个参数,会尝试将这个值转换为数值,返回布尔值

console.log(isnan('10'));//false
console.log(isnan('bb'));//true

数值转换
有3个函数可以把非数值转换为数值
number():使用于任何数值类型。

1.null

number(null)//0
undefined
number(undefined)//nan

2.布尔值

number(true)//1
number(false)//0

3.字符串

number('bb')//nan,非数值字符
number('123')//123,数值字符
number('')//0,空串

4.对象
如果是对象,则调用对象的valueof()方法,然后依照上述的规则转换返回的值。如果转换的结果是nan,则调用对象的tostring()方法,然后再次依照前面的规则转换返回的字符串值。
5.parseint()/parsefloat():用于将字符串转换为数值。

parseint():从第一个字符串开始解析,直到解析到非数字字符,可接受两个参数,第二个参数代表不同的进制,默认转换为十进制数。

parseint('')//nan,空串
parseint(22.4)//22
parseint('12bu')//12
parseint('10',2)//2
parseint('10',8)//8
parsefloat():从第一个字符串开始解析,第一个小数点有效,忽略前导0,只能转换为十进制数值。

parsefloat('')//nan
parsefloat('090')//90
parsefloat('2.3.4')//2.3

总结

  • 不区分整数值和浮点数, javascript中所有数字均用64位浮点数值标识(ieee 754)。
  • 就像java程序员所熟悉的double类型
  • 取值范围在 ±1.7976931348623157 × 10 308 到 ±5 × 10 −324 之间
  • 文字:

    • 整数
      • 十六进制 0x
      • 八进制 0
    • 浮点表示
    • math类
      • 方法
        • pow // 求幂
        • round //四舍五入
        • ceil //向上取整
        • floor //向下取整
        • abs //求绝对值
        • max //最大值
        • min //最最小值
        • sqrt
        • log
        • exp
        • acos
        • asin
        • atan
        • atan2
        • random
        • sin
        • cos
      • 常量
        • pi
        • e
        • ln2
        • ln10
        • log2e
        • log10e
        • pi
        • sqrt1_2
        • sqrt2
    • 无限值
      • 正无穷
        • infinity //rw
        • number.positive_infinity // r
        • 1/0
        • number.max_value + 1
      • 负无穷
        • number.negative_infinity //rw
        • -intifinty //r
        • -1/0
        • -number.max_value - 1
      • nan
        • 不与任何值相等 包括它自己.
        • nan //rw
        • number.nan //r
        • 0/0 //计算结果为nan
      • zero
        • number.min_value/2
        • -number.min_value/2
        • -1/infinity
        • -0
    • rounding-error

   var x = .3 - .2 
   var y = .2 - .1
   x == y
   x == .1 // => false .3 -.2 不等于 ./
   y == .1 // => true .2 - .1 等于 .1