js内置对象 BigInt
目录
概述
场景
定义BigInt
例子
使用BigInt时的注意点
验证例子1: n1为bigint, n2为数字, 使用Math.pow()函数来求两者的平方
验证例子2: 使用大数和number进行运算和比较
验证例子3: BigInt不能转小数
BigInt的内部转换
BigInt运算结果为小数会取整
BigInt的实例方法
概述
BigInt是javascript中的内置对象, 一般用来表示大数 (大于2^53 - 1的整数), 当遇到大数操作时应该想到BigInt, 他和number具有相似的行为, 同样可以用来加减乘除比较等等
场景
数字的最大安全值 : Number.MAX_SAFE_INTEGER 也就是 2^53 - 1
我们来看看操作数字的最大安全值会发生什么 ?
const n1 = Number.MAX_SAFE_INTEGER * 10;console.log(Number.MAX_SAFE_INTEGER, n1);
可以看到 原本最大安全值*10的结果应该是 90071992547409910 但结果不一样, 说明number的大数的操作并不安全, 接下来看看BigInt
定义BigInt
想要定义一个大数, 你可以在数字或者字符串后加个n, 或者使用BigInt() , typeof 检测大数的类型是 bigint
例子
const n1 = Number.MAX_SAFE_INTEGER;const n2 = 10nconst res = BigInt(n1) * BigInt(10);console.log(n1, res)console.log(typeof n2, typeof res);
可以看到使用bigint来进行计算结果就是正确的
使用BigInt时的注意点
使用大数时需要注意:
- BigInt类型不能和内置函数Math共同使用
- BigInt不能和number类型进行运算, 只能和同为BigInt的数字进行运算
- BigInt可以和number进行比较
- BigInt不能转小数, 只能转整数, 遇到不是数字的情况(布尔值或者[] )内部应该会尝试先将其转为数字
验证例子1: n1为bigint, n2为数字, 使用Math.pow()函数来求两者的平方
const n1 = 10n;try {console.log(Math.pow(n1, 2));} catch (error) {console.log(error);}const n2 = 10;console.log(Math.pow(n2, 2));
可以看到确实大数不能和math相关函数配合使用
验证例子2: 使用大数和number进行运算和比较
const n1 = 10n;const n2 = 20;try {console.log(n1 + n2);} catch (error) {console.log(error);}console.log(n1 + BigInt(n2));console.log(n1 > n2);
结果大数不能和number进行运算, 可以和number进行比较
验证例子3: BigInt不能转小数
try {console.log(BigInt(22.22));} catch (error) {console.log(error);}
报错内容大概是不能转换成bigint因为他不是个整数
BigInt的内部转换
console.log(BigInt(true));console.log(BigInt(false));console.log(BigInt([]));console.log(BigInt("1"));
可以看到确实转换成功了, 此时你可能会认为内部可能做了+单目运算符或者Number()的运算, 但是结果是令人遗憾的
try {console.log(BigInt(null));} catch (error) {console.log(error);}
具体转换也不必太过深究...实际也用不到
BigInt运算结果为小数会取整
BigInt的实例方法
- toLocaleString 返回此数字的 language-sensitive 形式的字符串
- toString 返回以指定基数(base)表示指定数字的字符串
- valueOf 返回指定对象的基元值
console.log(2n.toLocaleString());console.log(2n.toString(2));console.log(2n.valueOf());
可以看到 toString 确实能转成2进制, 其他两个概念大家可以自己查查
js内置对象 BigInt相关推荐
- JS 内置对象 String对象
JS内置对象 String对象:字符串对象,提供了对字符串进行操作的属性和方法. Array对象:数组对象,提供了数组操作方面的属性和方法. Date对象:日期时间对象,可以获取系统的日期 ...
- 前端:JS/23/JS内置对象(String对象,Array对象,Date对象,Boolean对象,Number对象,Math对象),实例:求圆的面积,求直角三角形
JS内置对象 1,String对象 字符串对象,提供了对字符串进行操作的属性和方法 2,Array对象 数组对象,提供了数组操作方面的属性和方法 3,Date对象 日期时间对象,可以获取系统的日期时间 ...
- 4月5日--课堂笔记--JS内置对象
JavaScript 4.5 一. JS内置对象 1.数组Array a)创建语法1:var arr=new Array(参数); i. 没有参数:创建一个初始容量为0的数组 ii. ...
- js内置对象【学习笔记】
今天系统的学了一下javascript的内置对象.mark相关的知识点: 首先,什么是js的内置对象,它包括了些什么内容?(以下内容转自网上资源的整合) (W3shool JS手册地址:http:// ...
- window内置对象和js内置对象与方法
window内置对象 一.navigator 代表着浏览器本身的信息: 代码名:navigator.appCodeName 浏览器语言:navigator.browserLanguage 操作系统 ...
- JS内置对象及其用法总结
首先JS对象分为3种:自定义.内置.浏览器.今天就总结一下JS内置对象以及一些用法. 一.Math对象:不是一个构造函数,不需要new,直接调用即可. 1.Math.max(x,y);返回x,y的最大 ...
- JS内置对象操作方法整理
JS对象操作方法整理 文章目录 JS对象操作方法整理 数组 ES5 ES6 字符串 String 日期 Date() 数字 Number 算数 Math 数组 ES5 concat() 连接两个或更多 ...
- js内置对象常用方法
js内置对象常用方法 JS内置对象: ● String对象:处理所有的字符串操作 ● Math对象:处理所有的数学运算 ● Date对象:处理日期和时间的存储.转化和表达 ● Array对象:提供一个 ...
- js浏览器内置对象和js内置对象
浏览器内置 1.Location 对象 hash :返回一个URL的锚部分 host 返回一个URL的主机名和端口 hostname 返回URL的主机名 href 返回完整的URL pathname ...
最新文章
- Kali Linux 装好系统后安装经常使用软件
- VC回调函数定义和使用
- 【R】Rstudio set up
- 有机化学芳烃 芳香性
- 如何在 SAP Fiori Elements List Report 表格工具栏里增添新的自定义按钮
- layui多文件上传讲解_Layui 多文件上传 SSH
- Java技术系列文章汇集(长期更新)
- LINUX优化--打开文件数保存方法
- Python中的枚举类型
- 中秋逢国庆 | 盛世华诞 阖家团圆
- C++11::lambda 的用法
- 扫码点菜系统代码_一顿火锅吃出474万天价?扫码点餐时,千万不要这样做
- HTTP下载龙卷风系列Office/Photoshop/金山词霸快译/
- 虎牙直播Js说书人弹幕
- 2007年考研时间安排表
- 让人拍案叫绝的创意都是如何诞生的
- 《寒江独钓 Windows内核安全》——串口的过滤
- 过压保护电路(OVP)
- html盒子在始终在左侧,div盒子在一行方法(左中右结构 CSS布局)
- C++的字符串输入方式