数值与Number

数值与Number

数值

  • JavaScript数值的特征

    • 不区分整数值和浮点数值。
    • 所有数值均用浮点数值表示。
    • 采用IEEE-754标准定义的64位浮点数格式表示。
      • 整数在实际操作时(如数组索引),则是基于32为整数。
  • 整数直接量

    • 除十进制外,JavaScript能识别十六进制(以0x或0X为前缀)、二进制(以0b或0B为前缀)和八进制(以0o或0O为前缀)。
      • 但在ES6的严格模式下,禁止使用八进制。
  • 浮点数直接量

    • 实数写法:由整数部分、小数点和小数部分组成。
    • 指数记数法:在实数部分后跟字母e或E,再跟正负号,在跟一个整型的指数。
  • 二进制浮点数与四舍五入错误

    • 实数有无数个,但JavaScript通过浮点数的形式只能表示其中有限个数。
  • 数值转换

    • JavaScript提供了3个函数可将非数值转换为数值。
      • Number( )、parseInt( )和parseFloat( )
  • 分析以下表达式的结果

    • Number(false)
    • Number(null)
    • Number(undefined)
    • Number(“011”)
    • Number(“1.1”)
    • Number(“0xf”)
    • Number(“”)
    • parseInt(22.5)
    • parseInt(“0xA”)
    • parseInt(“A”, 16)
    • parseFloat(“3.14159e3”)

Number

创建一个Number对象的构造函数。

  • 如:let num=new Number(10);

常用方法

  • toString( ),返回数值对象的字符串表示。
    • 如:num.toString( ); num.toString(2);
  • toLocaleString( ),返回数值对象的字符串本地表示。
    • 如:num=new Number(12356); num.toLocaleString( );
  • valueOf( ),返回数值对象的原始数值。
    • 如:num.valueOf( );
  • toFixed(n),返回包含指定小数位数的数值字符串。
    其中,n表示小数位数。
    • 如:num.toFixed(2); num=new Number(10.005); num.toFixed(2);
  • toExponential(n),返回科学记数法表示的数值字符串。其中,n表示结果中的小数的位数。
    • 如:num=123;num.toExponential(1); num.toExponential(3);
  • toPrecision(n),返回数值最恰当的形式。其中,n表示结果中数字的总位数(不包含指数)。
    • 如:num=99;num.toPrecision(1); num.toPrecision(3);
      本质上,它会根据数值和精度来确定调用toFixed( )还是toExponential( )。

为了正确的小数位精度表示数值,以上3个方法都会四舍五入。

  • Number.isFinite( )
    • 用于检查一个数值是否有限的(finite)。
  • Number.isNaN( )

isFinite()和isNaN的区别在于,传统方法先调用Number()将非数字转化为数值,再进行判断,而新方法只对数值有效,对于非数值一律返回false。Number.isNaN( )用于检查一个是否为NaN。如果参数类型不是NaN,一律返回false。

Number.parseInt( )与Number.parseFloat( )

  • ES6将全局方法parseInt( )和parseFloat( )移植到Number对象中,行为完全保持不变。
     Number.parsenInt === parseInt; //true
     Number.parseFloat === parseFloat //true
  • Number.isInteger( )

    • 用于判断一个数值是否为整数。如果参数不是数值,返回false。在js内部,整点与浮点数同样的储存方法,所有3与3.0被视为同一个值。

Math

常用方法

- min( )与max( )
可以接收任意多个参数。

  let max, min;
  max = Math.max(3, 33, 13, 43);
  console.log(max);
  min = Math.min(3, 33, 13, 43);
  console.log(min);
  let nums = [1, 2, 3, 4, 5, 6];
  max = Math.max(...nums);
  console.log(max);
  • 舍入方法
    • 把小数值舍入为整数。
      • Math.ceil( ),始终向上舍入为最接近的整数。
      • Math.floor( ),始终向下舍入最接近的整数。
      • Math.round( ),执行四舍五入。
      • Math.fround( ),放回数值最接近的单精度(32位)浮点数表示。
  • random( )
    • 返回一个0~1之间的随机数,其中包含0但不包含1。
  • Math.trunc( )
    • 用于去除一个数的小数部分,返回整数部分。
    • 对于非数值,其内部会先使用Number( )转换为数值再操作。
    • 对于空值和无法截取整数的值,返回NaN。
  • Math.sign( )
    • 用于判断一个数是正数、负数还是零。
    • 对于非数值,先将其转换为数值在判断。
    • 返回值
      • 正数:+1;负数:-1;
      • 0:0;-0:-0;
      • 其他值:NaN
  • Math.cbrt( )
    • 用于计算一个数的立方根。
    • 对于非数值,其内部会先使用Number( )转换为数值再操作。
    • 对于空值和无法截取整数的值,返回NaN。
  • Math.hypot( )
    • 用于计算所有参数的平方和的平方根。
    • 只要有一个参数无法转化为数值,就会返回NaN

BigInt

  • 与Number的区别

    • 不能用于 Math 对象中的方法;不能和任何 Number 实例混合运算,两者必须转换成同一种类型。在两种类型来回转换时要小心,因为 BigInt 变量在转换成 Number 变量时可能会丢失精度。
  • 使用 typeof 测试时, BigInt 对象返回 "bigint"

typeof 1n === 'bigint'; // true
typeof BigInt('1') === 'bigint'; // true
  • 使用 Object 包装后, BigInt 被认为是一个普通 "object"
typeof Object(1n) === 'object'; // true

当使用 BigInt 时,带小数的运算会被取整。

注意:
被 Object 包装的 BigInts 使用 object 的比较规则进行比较,只用同一个对象在比较时才会相等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值