博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript BigInt 尝鲜
阅读量:6229 次
发布时间:2019-06-21

本文共 711 字,大约阅读时间需要 2 分钟。

JavaScript 所有数字内部都是 Double64 类型,所以数值的精度最多只能到 53 个二进制位,大于这个范围的整数是无法精确表示的。

在很多金融场景如果使用 JS 的话就得使用一些 BigNumber 库。其中以太坊 web3.js 使用的是最为流行的是 ,并且包含 .d.ts 类型提示,推荐在生产环境使用。

因为这些库表示大数的方式是以 16 进制字符串表示的,通常在实践中还需要使用 Buffer.from() 转换成二进制对象,还是有很多不方便,需要写很多辅助函数。不过以后我们就可以使用官方标准库中的 BigInt 了。

目前(2018年5月1日)BigInt 提案已经进入 TC39 stage 3,不过还是被 V8 引擎提前实现,本文所有代码示例基于 Chrome Canary 68.0.3415.0,如下图所示。

BigInt 表示没有精度和大小限制的整数,为了兼容性考虑,在数字后面添加后缀n 和普通数字类型区分,使用二进制八进制和十六进制也可以表示。

数字的字符串形式可以类似于 Number() 使用 BigInt() 直接转换为 BigInt,需要注意的是参数检查和 Number() 是一致的,是不能使用 123n 字符串形式的参数,不过提案中还有一个静态函数 BigInt.paseInt() 目前V8 还没支持。

BitInt 除了不能和 number 类型直接运算之外,其它方面和普通的数值运算没有多少区别,除法运算始终返回整数形式。

BigInt 也存在隐式转换,在相等运算符==、不同类型运算以及强制类型转化函数,都还存在 JS 远古传统。

更多内容可以参考 ;原文链接:

转载地址:http://ypnna.baihongyu.com/

你可能感兴趣的文章
Getting Started with Scala
查看>>
curl != casperjs ? - Google Groups
查看>>
Oracle从字符串资源中得到想要的数据分析
查看>>
敏捷开发中的Code Review
查看>>
事务 commit
查看>>
{右键我的电脑无法打开计算机管理}解决方法
查看>>
如何获取和发送Http请求和相应
查看>>
【HeadFirst 设计模式学习笔记】4 工厂模式
查看>>
CentOS6.4 安装mysql cmake的参数说明
查看>>
创新型政府网站群建设
查看>>
sql server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件...
查看>>
notepad++下载Subversion插件,显示intalltion of subversion failed
查看>>
Internationalization composition diagram
查看>>
四轴自适应控制算法的一些尝试开源我的山猫飞控和梯度在线辨识自适应等算法—(转)...
查看>>
[转]Android的userlogin登录
查看>>
接口里面的静态方法--痒啊
查看>>
电子商务网站数据分析常用指标(转)
查看>>
windows下用go语言写程序
查看>>
【转】iOS Programming – 触摸事件处理
查看>>
Handler的介绍及实例
查看>>