Integer 数据类型

简介

JavaScript 所有数字都保存成 64 位浮点数,这决定了整数的精确程度只能到 53 个二进制位。大于这个范围的整数,JavaScript 是无法精确表示的,这使得 JavaScript 不适合进行科学和金融方面的精确计算。

现在有一个提案,引入了新的数据类型 Integer(整数),来解决这个问题。整数类型的数据只用来表示整数,没有位数的限制,任何位数的整数都可以精确表示。

为了与 Number 类型区别,Integer 类型的数据必须使用后缀n表示。

  1. 1n + 2n // 3n

二进制、八进制、十六进制的表示法,都要加上后缀n

  1. 0b1101n // 二进制
  2. 0o777n // 八进制
  3. 0xFFn // 十六进制

typeof运算符对于 Integer 类型的数据返回integer

  1. typeof 123n
  2. // 'integer'

JavaScript 原生提供Integer对象,用来生成 Integer 类型的数值。转换规则基本与Number()一致。

  1. Integer(123) // 123n
  2. Integer('123') // 123n
  3. Integer(false) // 0n
  4. Integer(true) // 1n

以下的用法会报错。

  1. new Integer() // TypeError
  2. Integer(undefined) //TypeError
  3. Integer(null) // TypeError
  4. Integer('123n') // SyntaxError
  5. Integer('abc') // SyntaxError

运算

在数学运算方面,Integer 类型的+-***这四个二元运算符,与 Number 类型的行为一致。除法运算/会舍去小数部分,返回一个整数。

  1. 9n / 5n
  2. // 1n

几乎所有的 Number 运算符都可以用在 Integer,但是有两个除外:不带符号的右移位运算符>>>和一元的求正运算符+,使用时会报错。前者是因为>>>要求最高位补 0,但是 Integer 类型没有最高位,导致这个运算符无意义。后者是因为一元运算符+在 asm.js 里面总是返回 Number 类型或者报错。

Integer 类型不能与 Number 类型进行混合运算。

  1. 1n + 1
  2. // 报错

这是因为无论返回的是 Integer 或 Number,都会导致丢失信息。比如(2n**53n + 1n) + 0.5这个表达式,如果返回 Integer 类型,0.5这个小数部分会丢失;如果返回 Number 类型,会超过 53 位精确数字,精度下降。

相等运算符(==)会改变数据类型,也是不允许混合使用。

  1. 0n == 0
  2. // 报错 TypeError
  3. 0n == false
  4. // 报错 TypeError

精确相等运算符(===)不会改变数据类型,因此可以混合使用。

  1. 0n === 0
  2. // false

Integer 数据类型相关推荐

  1. c语言sqlite3写数据类型,在sqlite数据库中,int类型不等于integer数据类型

    在sqlite数据库中,int类型不等于integer数据类型 这些天一直在忙销售管理软件易卖通客户端的程序编写,由于需要采用本地数据缓存机制来提高程序的数据访问效率,所以需要在客户端使用一个小巧的本 ...

  2. c语言中integer是什么数据类型,integer是什么数据类型

    integer是编程语言的基本数据类型之一,用以指示变量的数据类型,有时也用于常量[变量.表达式]的强制数据类型转换:Integer一个整型数据用来存储整数,整数包括正整数,负整数和零. 本文环境:w ...

  3. mysql int mediumint,MySQL数据类型:TINYINT, SMALLINT, MEDIUMINT, INT, INTEGER等字段类型区别...

    好久没有接触后端数据库方面的知识了,一直没搞清楚像int(4) TINYINT(16)中的4和16表示的是什么含义,以及每种数据类型占用的字节数和表示的范围是多少,今天做个总结学习一下. MySQL支 ...

  4. Verilog初级教程(3)Verilog 数据类型

    文章目录 前言 正文 变量可以取什么样的值? 变量的取值意味着什么? 主要的数据类型 其他数据类型 integer time / realtime real 例子 Verilog的字符串 写在最后 前 ...

  5. mysql数据类型默认长度_mysql数据类型长度

    1个字节= 8位  tinyint 为一个字节  2的8次方= 256 所以最多存储到256 日期和时间数据类型 MySQL数据类型 含义 date 3字节,日期,格式:2014-09-18 time ...

  6. MySQL数据库数据类型以及INT(M)的含义

    nt(M)我们先来拆分,int是代表整型数据那么中间的M应该是代表多少位了,后来查mysql手册也得知了我的理解是正确的,下面我来举例说明. MySQL 数据类型中的 integer types 有点 ...

  7. mysql Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT

    使用mysql的时候,用到int类型的蛮多,需要注意一下: 1. 值的范围 Type Storage Minimum Value Maximum Value   (Bytes) (Signed/Uns ...

  8. mysql 数据类型 int_MySQL数据类型 int(M) 表示什么意思?

    MySQL 数据类型中的 integer types 有点奇怪.你可能会见到诸如:int(3).int(4).int(8) 之类的 int 数据类型.刚接触 MySQL 的时候,我还以为 int(3) ...

  9. SQLite学习手册(数据类型)

    一.存储种类和数据类型: SQLite将数据值的存储划分为以下几种存储类型:      NULL: 表示该值为NULL值.      INTEGER: 无符号整型值.      REAL: 浮点值. ...

最新文章

  1. 等差数列连续异或模板
  2. CheckCode.js 前端验证码插件
  3. 区块链系统之《基于区块链的数字身份认证》
  4. 代码练习中的bug及修改方法
  5. 吴恩达深度学习 —— 2.15 python中的广播
  6. 用c++定义两个坐标点,计算两点间距离;进而计算线段的面积
  7. POJ - 3046 多重集组合数问题的线性DP(四种方法)
  8. 人是需要一个圈子互相激励的
  9. linux程序库设置错误,Linux--C库函数ferror中文翻译
  10. 前方荆棘遍地,愿砥砺前行
  11. 【安全知识分享】2021年安全生产月主题宣讲课件(附下载)
  12. 迭代器Iterator的用法
  13. 计算机考研调查报告,关于大学生考研的调查报告
  14. opencv中meanshift和camshift函数的使用
  15. C语言文件——从创建到删除
  16. 小城里的“明星”产业,有微信云托管保驾护航
  17. nodejs爬虫大作业项目
  18. Spring之自动装配
  19. 计算机考研最易985,2020考研:盘点那些易考的985院校
  20. 视频轻量级下载工具 you-get/ lulu/ Annie 合集

热门文章

  1. tensorflow3
  2. Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)
  3. ES6入门笔记(一)
  4. Jquery需要掌握的技巧
  5. js去掉html标签和去掉字符串文本的所有的空格
  6. poj2942(双联通分量,交叉染色判二分图)
  7. HDU-2525 Clone Wars 模拟
  8. windows phone 页面导航(6)
  9. 【开源】我的分页控件正式命名为QuickPager ASP.NET2.0分页控件
  10. vs studio2015导入本地项目_Visual Studio2019自定义项目模板