编程笔记 html5cssjs 072 JavaScript BigInt数据类型

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

  • 一、BigInt 数据类型
  • 二、BigInt 的创建和使用
  • 三、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
    
  2. 构造函数表示法
    如果需要将字符串或其他类型转换为BigInt,可以使用BigInt构造函数。

    let alsoBigInt = BigInt("9007199254740993"); // 字符串转BigInt
    console.log(alsoBigInt); // 输出: 9007199254740993nlet 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); // 正确执行,结果也是一个BigIntlet 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处理大整数的能力,使得在开发中能够更精确地进行大量整数计算而无需担心溢出问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/668420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASR 概述

前言 随着企业加强了与客户的线上沟通&#xff0c;企业越发依赖于虚拟助手、聊天机器人以及其他的语音技术&#xff0c;以实现与客户的高效互动。这几类人工智能&#xff0c;都是依赖于自动语音识别技术&#xff0c;简称为 ASR。ASR 涉及到将语音转换为文本&#xff0c;促使计…

docker proxy 【docker 代理】

第一种 创建代理配置文件 mkdir -p /etc/systemd/system/docker.service.d/ cat <<EOF > /etc/systemd/system/docker.service.d/http-proxy.conf Environment"HTTP_PROXYhttp://192.168.21.101:7890" Environment"HTTPS_PROXYhttp://192.168.21.1…

同城外卖跑腿app开发:重新定义城市生活

随着科技的发展和人们生活节奏的加快&#xff0c;同城外卖跑腿app应运而生&#xff0c;成为现代城市生活中的重要组成部分。本文将探讨同城外卖跑腿app开发的意义、市场需求、功能特点以及未来的发展趋势。 一、同城外卖跑腿app开发的意义 同城外卖跑腿app作为一种便捷的生活…

【java批量导出pdf】优化方案

问题情境&#xff1a; 项目中存在web页面点击一键导出&#xff0c;导出所有数据对应的pdf文件&#xff0c;由于有些pdf文件是实时生成的&#xff0c;之前最简答的写法for循环处理速度太慢&#xff0c;超过了nginx配置的最大响应时间了&#xff0c;且对用户交互体验上很不友好&…

sqli.labs靶场(41-53关)

41、第四十一关 -1 union select 1,2,3-- -1 union select 1,database(),(select group_concat(table_name) from information_schema.tables where table_schemadatabase()) -- -1 union select 1,2,(select group_concat(column_name) from information_schema.columns wher…

通用函数

目录 处理null 多数值判断 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 Oracle 提供了两个简单的数据处理函数&#xff1a; nvl()、decode()。在版本升级的过程中&#xff0c;这两个函数又衍生出了许多子函数 处理null 下面首先…

0基础学习VR全景平台篇第141篇:如何制作卫星航拍全景

大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 很多人都看过或者拍摄过航拍全景&#xff0c;其效果相比于普通的地拍的确有着更加震撼的拍摄效果&#xff0c;但是受限于无人机高度&#xff0c;以及禁飞区等等限制&#xff0c;导致很多大场景无法展示完全&a…

npm eslint 禁用

配置文件 ESLint 最主要的配置方式。ESLint 配置文件支持多种格式&#xff0c;同一目录下&#xff0c;ESLint 按 .eslintrc.js, .eslintrc.cjs, .eslintrc.yaml, .eslintrc.yml, .eslintrc.json, package.json 下的 eslintConfig 字段 的顺序查找配置&#xff0c;相同目录下只…

Linux防火墙与iptables五表五链规则介绍

目录 一、防火墙基本认识 1. 安全技术 2. 防火墙分类 3. 防火墙工具介绍 二、iptables 1. 概述 2. 五表五链 3. 语法 3.1 基本语法 3.2 语法总结 4. 管理选项 5. 通用匹配 6. 控制类型 7. iptables应用 7.1 新增防火墙规则 7.2 查看规则表 7.3 黑白名单 7.4 …

【应用容器-Docker】

Docker 是一个开源的容器化平台&#xff0c;可以帮助开发者将应用程序和所有依赖项打包到一个称为容器的可移植单元中。容器化技术可以提供一种轻量级、快速、可靠和可重复部署应用程序的方法。 Docker 的基本概念包括以下几个方面&#xff1a; 1. 镜像&#xff08;Image&…

C++ 调用lua 脚本

需求&#xff1a; 使用Qt/C 调用 lua 脚本 扩展原有功能。 步骤&#xff1a; 1&#xff0c;工程中引入 头文件&#xff0c;库文件。lua二进制下载地址&#xff08;Lua Binaries&#xff09; 2&#xff0c; 调用脚本内函数。 这里调用lua 脚本中的process函数&#xff0c;并…

canvas图片上设置镂空文字效果

查看专栏目录 canvas实例应用100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

C语言-3

定义指针 /*指针的概念:1.为了方便访问内存中的内容&#xff0c;给每一个内存单元&#xff0c;进行编号&#xff0c;那么我们称这个编号为地址&#xff0c;也就是指针。2.指针也是一种数据类型&#xff0c;指针变量有自己的内存&#xff0c;里面存储的是地址&#xff0c;也就是…

Ansible概述、Ansible环境准备、Ansibleadhoc临时命令语法、命令模块、文件模块、用户模块、综合练习

ansible 批量管理服务器的工具2015年被红帽公司收购使用Python语言编写的基于ssh进行管理&#xff0c;所以不需要在被管端安装任何软件ansible在管理远程主机的时候&#xff0c;主要是通过各种模块进行操作的 环境准备 主机名IP地址角色web1192.168.88.11被控制节点&#xf…

【HarmonyOS应用开发】APP应用的通知(十五)

相关介绍 通知旨在让用户以合适的方式及时获得有用的新消息&#xff0c;帮助用户高效地处理任务。应用可以通过通知接口发送通知消息&#xff0c;用户可以通过通知栏查看通知内容&#xff0c;也可以点击通知来打开应用&#xff0c;通知主要有以下使用场景&#xff1a; 显示接收…

BUGKU-WEB Simple_SSTI_1

02 Simple_SSTI_1 题目描述 没啥好说的~ 解题思路 进入场景后&#xff0c;显示&#xff1a; You need pass in a parameter named flag。ctrlu 查看源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><titl…

【MySQL】-10 MySQL 存储过程

MySQL 存储过程 优点缺点一、存储过程的创建和调用创建存储过程实例1、in 输入参数2、out输出参数3、inout输入参数 三、变量1. 变量定义2. 变量赋值3. 用户变量 四、注释MySQL存储过程的调用MySQL存储过程的查询MySQL存储过程的修改MySQL存储过程的删除MySQL存储过程的控制语句…

使用freemarker和itextpdf结合,将html转化为pdf

工作中遇到模板中的html&#xff0c;需要转化成pdf作为附件上传到系统 于是经过研究分析&#xff0c;得出用freemarker和itextpdf结合 maven需要导入包&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boo…

【力扣每日一题】力扣1696跳跃游戏VI

题目来源 力扣1696跳跃游戏VI 题目概述 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 一开始你在下标 0 处。每一步&#xff0c;你最多可以往前跳 k 步&#xff0c;但你不能跳出数组的边界。也就是说&#xff0c;你可以从下标 i 跳到** [i 1&#xff0c; min(n …

代码随想录 Leetcode491. 非递减子序列

题目&#xff1a; 代码(首刷看解析 2024年2月3日&#xff09;&#xff1a; class Solution { private:vector<vector<int>> res;vector<int> path; public:void backtracking(vector<int>& nums, int startIndex) {if (path.size() > 1) {res.…