关于js的BigInt的使用与注意事项

说明

BigInt是一种内置对象,提供了一种方法来表示大于2^53 - 1 的整数,2^53 - 1 为Number可以表示的最大数字,BigInt可以突破限制,可以用任意精度表示整数,超出Number的安全整数限制,也可以安全地存储和操作大整数。chrome 67+开始支持使用。
注意:当使用BigInt时,带小数的运算会被取整

使用方式

在一个整数字面量后面加n来定义一个BigInt,如:10n
调用函数BigInt(需要转换的数据),并传递一个整数值或字符串值
全局BigInt(number)函数可以将Number类型转换为BigInt,即BigInt(123)===123n

与Number的不同之处

BigInt不能用于Math对象中的方法
不能和任何Number实例混合运算,两者必须转换成同一种类型
两种类型来回转换时要小心,因为BigInt变量在转换成Number变量时可能会丢失精度
BigInt为双精度浮点数,可以表示的最大安全范围为±9007199254740991,即2的53次方减1,比其大的所有值都可以使用BigInt表示,而Number不可表示超出2的53次方减1的数

与Number比较

BigInt与Number不是严格相等,但是相对宽松相等
两者可以进行比较
两者可以混在一个数组内并排序

代码比较

在控制台中打印一个超出较大的数字“123456789123456789”时number会失去进度而bigInt却不会

let bigInt = 123456789123456789n
let number = 123456789123456789
console.log(bigInt)
console.log(number)

在这里插入图片描述

数据库储存方便建议存成字符串形式

BigInt对比Number在较大数值计算中的优势

bigInt和number乘以相同的值但结果天差地别,明显bigInt才是直观并且准确的

let bigInt = 123456789123456789n
let number = 123456789123456789console.log('bigInt', bigInt * 123456n)
console.log('number', number * 123456)

在这里插入图片描述

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

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

相关文章

Sentinel限流规则支持流控效果

流控效果是指请求达到流控阈值时应该采取的措施,包括三种: 1.快速失败:达到阈值后,新的请求会被立即拒绝并抛出FlowException异常。是默认的处理方式。 2.warm up:预热模式,对超出阈值的请求同样是拒绝并抛…

3D模型格式转换工具HOOPS Exchange的层次结构遍历

这是两部分文章中的第一部分,我们将在其中开发一种通用算法,用于遍历 HOOPS Exchange 中实现的对象层次结构。遍历对象层次结构是几乎每个工作流程的重要且无处不在的部分。我们在这里描述的算法可以在Exchange Toolkit 中找到。 HOOPS Exchange 是一个…

Pypputeer自动化

Pyppeteer简介 pyppeteer 是 Python 语言的一个库,它是对 Puppeteer 的一个非官方端口,Puppeteer 是一个 Node 库,Puppeteer是Google基于Node.js开发的一个工具,它提供了一种高层次的 API 来通过 DevTools 协议控制 Chrome 或 Ch…

【胡寿松 自动控制原理】【考研冲刺加分神器】各院校考研例题详细讲解

声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。    本专栏中包含【胡寿松 自动控制原理】专业课的例题讲解,适合考研冲刺阶段学习,该视频只适合作为辅助教学视频来使用&#xff0c…

Java21 + SpringBoot3集成easy-captcha实现验证码显示和登录校验

文章目录 前言相关技术简介easy-captcha 实现步骤引入maven依赖定义实体类定义登录服务类定义登录控制器前端登录页面实现测试和验证 总结附录使用Session缓存验证码前端登录页面实现代码 前言 近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的…

openEuler安装KVM

1、关闭防火墙和selinux [rootlocalhost ~]# systemctl stop firewalld[rootlocalhost ~]# setenforce 0 2、下载软件包 libvirt:用于管理虚拟化平台的开源的 API,后台程序和管理工具。 qemu:开源(模拟)软件&#…

Cadence——布局部分相关教程

本文章基于【凡亿】Cadence Allegro 17.4零基础入门66讲PCB Layout设计实战加个人理解写出 (一)中英文切换 注意:只是将选项卡部分切换中文 1,设置中文 a,打开PCB Editor 17.4以后,点击Help和About b,可以看到与下…

MSG3D

论文在stgcn与sta-lstm基础上做的。下面讲一下里面的方法: 1.准备工作 符号。这里是对符号进行解释。 一个人体骨骼图被记为G(v,E) 图卷积: 图卷积定义 考虑一种常用于处理图像的标准卷积神经网络 (CNN)。输入是像素网格。每个像素都有一个数据值向…

Spring-配置文件

一、引子 了解完Spring的基本概念后,我们紧接着来了解Spring中的核心文件--Spring配置文件。 二、配置Bean 我们在上一节Spring的基本概念中快速使用了一下Spring,其中我们在配置文件中主要涉及到就是Bean标签的配置:主要的配置字段有id, …

JVM系列-1.初识JVM

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理🔥如果感觉博主的文…

多场景建模:阿里多场景多任务元学习方法M2M

multi-scenario multi-task meta learning approach (M2M) 背景 广告领域大部分是针对用户建模的,像点击率预估,很少有针对广告主需求建模(广告消耗预估、活跃率/流失率预估、广告曝光量预估),广告的类型较多&#x…

前端转鸿蒙的就业前景如何?有必要学鸿蒙么?

学习鸿蒙开发是否有必要,取决于多个因素: 一、个人兴趣与职业规划: 如果你对华为鸿蒙操作系统(HarmonyOS)感兴趣,并且希望将这个平台作为你的职业发展的方向,那么学习鸿蒙开发是非常有意义的。…