【JS学习】基本类型-数值与Number

一、数值

1、number类型

包括了常规数字类型和NaN。

2、JS数值的特征

  • 不区分整数值和浮点数值。
  • 所有数值均用浮点数表示。
  • 采用IEEE-754标准定义的64位浮点数格式表示
    (整数在实际操作时基于32位整数,此时在表达数的时候是有限的

3、直接量

(1)整数的直接量

整数的直接量也就是整数的字面量。

除了十进制外,JS能识别十六进制,并且在实际的使用中,十六进制的使用场景比较多。
在ES6的严格模式下,禁止使用八进制(以0o或0O为前缀)

(2)浮点数直接量

浮点数的直接量可以理解为浮点数的字面量。
浮点数的直接量的写法分为:实数写法和指数记数法(科学计数法)
实数写法:3.1415
指数计数法:实数部分后跟e(或E),再跟正负号,再跟整型的指数。例如:5.12e12则表示5.12 x 10^12。

(3)算数运算

运算符
(ES5)+、-、*、/、%。
(ES6)**(指数操作符)如:2**3**2 = 2^(3^2)

溢出 overflow

  • 溢出发生在数值运算的结果超过了JS能表示的数值上限的时候。
  • 溢出的结果输出为infinity。超过负数范围则是-infinity。
  • 基于±Infinity的加、减、乘、除等算术运算结果依然是±Infinity。
    任意数除以0就会导致溢出,但是JS不会报错,只会输出 ± infinity。
    在这里插入图片描述
    infinity / infinity的结果是NaN。因为在计算机中的infinity是无法表示的,则计算机认为inifinity是非数值NaN。

下溢 underflow

  • 当运算结果无限接近于零,并比JavaScript能表示的最小值还小时发生。
  • 下溢的结果JS会返回0,如果一个负数发生下溢,则返回 -0。
    在这里插入图片描述
    被零整除
    会简单地返回 ± infinity。0 / 0 = NaN

4、数值转换

JS提供了3个函数可以将非数值转换成为数值。Number()、parseInt()、parseFloat()

例如:
parseInt(“0xA”)  //10
parseInt(“A”, 16)  //10
parseInt("3.14159e3") //3
parseInt(3.14159e3)//3141

parseFloat(“3.14159e3”)  //3141.59

二、Number

1、基本用法

对应与数值的应用类型,创建一个Number对象的构造函数let num = new Number(10);
常用方法

  • toString( ),返回数值对象的字符串表示。toSring(2)中的2表示,按照2进制进行转化。
    在这里插入图片描述
  • toLocaleString( ),返回数值对象的字符串本地表示。
    在这里插入图片描述
  • valueOf( ),返回数值对象的原始数值。(可以理解为,将包装对象的装箱的原始值给拆箱出来)
    在这里插入图片描述
  • 为了正确的小数位数精度表示,3个会四舍五入返回值的方法。toFixed(n)、toExponential(n)、oPrecision(n)
    toFixed(n),返回包含指定小数位数的数值字符串。n表示保留的小数位数。
    toExponential(n),返回科学记数法表示的数值字符串。n表示结果中的小数的位数。
    toPrecision(n),返回数值最恰当的形式。n表示结果汇总数字的总位数(不包含指数)。
    从本质上来说,toPrecision()会根据精度来确定调用toFixed()还是toExponential()
    在这里插入图片描述

2、Number在ES6新增方法

(1)Number.isFinite( ),用于检查一个数值是否有限,有限则返回true,无限则返回false。
如果参数类型不是数值,一律返回false
Number.isFinite()不会对数值进行转换,并且 isFinite === Number.isFinite的结果为false,表明这两个并不是同一种方法。
全局下的isFinite会对数字字符串(“123”)进行转换,但是Number.isFinite不会进行任何转换。

(2)Number.isNaN( ),用于检查一个是否为NaN。如果参数类型不是NaN,一律返回false。
在这里插入图片描述在这里插入图片描述
(3)Number.parseInt( )与Number.parseFloat( ),这两个方法与全局环境下的parseInt()和parseFloat()没有区别,行为完全保持一致。

(4)Number.isInteger( ),用于判断一个数值是否为整数。如果参数不是数值,就会返回false。
Number.isInteger()不会对参数进行类型转换。
在这里插入图片描述
(5)Number.EPSILON,常量,表示1与大于1的最小浮点数之间的差。(大于1的最小浮点数表示JS可以表示的最小浮点数)
Number.EPSILON常用来做精度控制。
JavaScript中采用64位存储浮点数,大于1的最小浮点数相当于二进制的1.00…001,其间有连续51个零。

三、Math对象

保存数学公式、信息和计算,提供了一些辅助计算的属性和方法。

1、常见属性

在这里插入图片描述

2、常用方法

  • min( )与max( ),可以接收任意多个参数。
    字符串找最大值不可以用max(),min(),max和min只能接受数值
    -舍入方法(把小数舍入为整数) 在这里插入图片描述
  • random( )返回一个0~1之间的随机数,其中包含0但不包含1。
    具体用法:(1)Math.floor(Math.random( )*可选整数的总数+最小可能的整数),可从一个最小整数开始的一个范围内选择一个随机整数。
    示例:
      function randomFrom(lower,upper){
           var l = Math.floor(Math.random()*(upper - lower +1  )+lower);
           console.log(l);
       }
       randomFrom(2,5);
  • Math.trunc( ),用于去除一个数的小数部分,返回整数部分。
    对于非数值,其内部会先使用Number( )转换为数值再操作。
    对于空值和无法截取整数的值,返回NaN。
    空字符串会返回0而不是NaN
    在这里插入图片描述
  • Math.sign( ),用于判断一个数是正数、负数还是零。**返回值:正数返回为+1,负数返回-1,0返回0,-0返回-0,其他值返回NaN
    Math.sign和Math.trunc都会先对非数值参数转换成数值再进行判断在这里插入图片描述
  • Math.cbrt( ),用于计算一个数的立方根。
    对于非数值,其内部会先使用Number( )转换为数值再操作。
    对于空值和无法截取整数的值,返回NaN。
  • Math.hypot( ),用于计算所有参数的平方和的平方根。
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值