编程笔记 html5&css&js 072 JavaScript BigInt数据类型

简介: 编程笔记 html5&css&js 072 JavaScript BigInt数据类型


JavaScript BigInt 数据类型是一种内置的数据类型,用于表示大于 Number.MAX_SAFE_INTEGER(即2^53 - 1)的整数。由于JavaScript中的标准数字类型(Number)使用双精度浮点格式存储,它在表示非常大的整数时会受限于其精度,可能导致精度丢失或无法正确表示超过安全范围的整数值。

一、BigInt 数据类型

JavaScript BigInt 数据类型是一种内置的数据类型,用于表示大于 Number.MAX_SAFE_INTEGER(即2^53 - 1)的整数。由于JavaScript中的标准数字类型(Number)使用双精度浮点格式存储,它在表示非常大的整数时会受限于其精度,可能导致精度丢失或无法正确表示超过安全范围的整数值。

BigInt类型的引入解决了这个问题,允许程序员处理任意大小的整数,包括那些对于常规Number类型来说过大的整数。

二、BigInt 的创建和使用

  1. 字面量表示法
    创建BigInt对象最直接的方式是通过在整数值后面添加后缀 n
let bigintValue = 9007199254740993n; // 这是一个BigInt值
console.log(bigintValue); // 输出: 9007199254740993n
  1. 构造函数表示法
    如果需要将字符串或其他类型转换为BigInt,可以使用BigInt构造函数。
let alsoBigInt = BigInt("9007199254740993"); // 字符串转BigInt
console.log(alsoBigInt); // 输出: 9007199254740993n
let fromNumber = BigInt(Number.MAX_SAFE_INTEGER + 1); // Number转BigInt
console.log(fromNumber); // 输出: 9007199254740994n

三、BigInt 操作与方法

  • 算术运算:BigInt支持基本的算术运算,如加法、减法、乘法、除法、取模等,但需要注意的是,BigInt与Number不能直接进行混合运算,必须先将Number转换为BigInt。
let a = 123456789012345678901234567890n;
let b = 987654321098765432109876543210n;
let sum = a + b;
console.log(sum); // 正确执行,结果也是一个BigInt
let mixAdd = a + 1; // 错误,BigInt和Number不能直接相加
// 必须改为:
let correctMixAdd = a + BigInt(1);
  • 比较操作:BigInt同样支持比较运算符(<, >, <=, >=, ==, !=)来比较两个BigInt或BigInt与Number(Number会被自动转换为BigInt以便比较)。
  • 位运算:BigInt也支持位操作符,如按位与(&)、按位或(|)、按位异或(^)、左移(<<)、右移(>>)以及无符号右移>>>(ES2022中新增)。
  • 库函数
  • BigInt.asUintN(width, bigint):将BigInt包装为指定宽度(以比特为单位)的无符号整数。
  • BigInt.asIntN(width, bigint):将BigInt包装为指定宽度(以比特为单位)的有符号整数。

三、示例

let uint64Value = BigInt.asUintN(64, BigInt("18446744073709551615")); // 最大64位无符号整数
console.log(uint64Value.toString()); // 输出: "18446744073709551615"
let int64Value = BigInt.asIntN(64, BigInt("-9223372036854775808")); // 最小64位有符号整数
console.log(int64Value.toString()); // 输出: "-9223372036854775808"

小结

总之,BigInt数据类型增强了JavaScript处理大整数的能力,使得在开发中能够更精确地进行大量整数计算而无需担心溢出问题。

相关文章
|
10月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
JavaScript 前端开发 Java
JavaScript:编程宇宙的多面闪耀之星-揭秘 JavaScript,编程界的全能霸主如何炼成?-优雅草卓伊凡
JavaScript:编程宇宙的多面闪耀之星-揭秘 JavaScript,编程界的全能霸主如何炼成?-优雅草卓伊凡
419 24
JavaScript:编程宇宙的多面闪耀之星-揭秘 JavaScript,编程界的全能霸主如何炼成?-优雅草卓伊凡
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
806 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
656 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
1044 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
JavaScript Ubuntu Linux
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
html+js+css实现的建筑方块立体数字时钟源码
html+js+css实现的建筑方块立体数字时钟源码
625 33
|
JavaScript 前端开发 IDE
【编程向导】Js与Ts差异详解:选择与权衡
JavaScript 一直是 Web 开发的基石,以其灵活性和动态性著称,但其松散类型可能导致大型项目中出现难以调试的错误。TypeScript 作为 JavaScript 的超集,通过引入静态类型系统,提供了更高的类型安全性和更好的工具支持,尤其适合大型团队和复杂项目。本文详细对比了 JavaScript 和 TypeScript 的优缺点,并提供了实际代码示例,帮助开发者根据项目需求选择合适的工具。
1883 2
一个好看的小时钟html+js+css源码
一个好看的小时钟html+js+css源码
271 24
|
JavaScript 前端开发
页面滚动触发css3动画js插件
delighters.js是一款页面滚动触发css3动画js插件。该js插件可以在页面向下滚动时,为进入浏览器视口的元素制作各种炫酷的CSS3动画效果。
211 13