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

在很多金融场景如果使用 JS 的话就得使用一些 BigNumber 库。其中以太坊 web3.js 使用的是最为流行的是 bignumber.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 远古传统。

更多内容可以参考 BigInt 提案;原文链接:我的博客

JavaScript BigInt 尝鲜相关推荐

  1. ArcGIS API for JavaScript 4.0尝鲜——WebGIS前端开发大杀器

    已经发布的ArcGIS API for JavaScript 4.0有着最前沿的新特性,这是一个更加对于开发者更加友好的Web API.3D的支持让你可以以更加炫酷的方式展示地理数据,而更加简洁明了的 ...

  2. 前端每周清单第 49 期:Webpack 4 Beta 尝鲜,React Windowing 与 setState 分析

    前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点:分为新闻热点.开发教程.工程实践.深度阅读.开源项目.巅峰人生等栏目.欢迎关注[前端之巅]微信公众号(ID: fron ...

  3. python wasm_Python-pywasm-美味尝鲜

    Pywasm: Python 爱上 Wasm, 美味尝鲜! pywasm 是一个使用纯 Python 实现的 WebAssembly 解释器. 您可以使用如下命令来安装它: $ pip3 instal ...

  4. Spring-Data-JPA尝鲜:快速搭建CRUD+分页后台实例

    戳蓝字"CSDN云计算"关注我们哦! 简书ID:@我没有三颗心脏   github:wmyskxz   欢迎关注公众微信号:wmyskxz 前言:由于之前没有接触过Hibernat ...

  5. 一加8 线刷官方ColorOS尝鲜版遇到的各种问题及解决方案

    一加工程师发布刷尝鲜版Color OS系统的教程贴 教程原地址:https://www.oneplusbbs.com/thread-5873103-1.html 一加8刷Color OS 这里请注意, ...

  6. hexo(sakura)给博客增添侧边栏(回到顶部,跳转评论,深色模式,播放音乐)Valine-1.4.4新版本尝鲜+个性制定(表情包、qq头像、UI样式)

    文章目录 hexo(sakura)给博客增添侧边栏(回到顶部,跳转评论,深色模式,播放音乐) 原理 直接使用 Valine-1.4.4新版本尝鲜+个性制定(表情包.qq头像.UI样式) 总结 本文全是 ...

  7. Taro 小程序开发大型实战(六):尝鲜微信小程序云(上篇)

    欢迎继续阅读<Taro 小程序开发大型实战>系列,前情回顾: 熟悉的 React,熟悉的 Hooks[1]:我们用 React 和 Hooks 实现了一个非常简单的添加帖子的原型 多页面跳 ...

  8. IE8 Beta 1 简体中文版尝鲜截图(多图)

    <p>今天刚在<a title="IE官方博客" href="http://blogs.msdn.com/ie/archive/2008/04/07/i ...

  9. 微信团队分享:Kotlin渐被认可,Android版微信的技术尝鲜之旅

    本文由微信开发团队工程是由"oneliang"原创发表于WeMobileDev公众号,内容稍有改动. 1.引言 Kotlin 是一个用于现代多平台应用的静态编程语言,由 JetBr ...

  10. galaxy android 8,三星终于正式升级安卓8.0!Galaxy S8尝鲜

    原标题:三星终于正式升级安卓8.0!Galaxy S8尝鲜 经过长时间的测试,在友商陆续吃上奥利奥之后,三星终于开始向Galaxy S8/S8+正式推送安卓8.0,也带来了新的Experience U ...

最新文章

  1. 逃离深圳,一个程序员的选择
  2. 后台ajax调用中字符串到jquery中的json对象和数组对象转换问题
  3. 在C++工程中设置全局函数
  4. timestomping 修改文件时间戳
  5. switch和if的比较
  6. 对象存储S3访问姿势
  7. du,df命令和磁盘管理
  8. PDF格式转换工具百度网盘下载地址及破解方法
  9. 微信跳wap php_微信跳转wap外部浏览器接口如何实现
  10. VB写的随机点名器代码
  11. web前端入坑系列回归,再推荐一波学习资源
  12. spring security实现注解式权限管理时不成功,注解@Secured 无效
  13. Base64解密转图片
  14. Gradle源码全解析,已拿offer
  15. backupexec mysql_backup-mysql.sh
  16. 如果解决长尾数据(样本不均衡)
  17. 经典算法大全51例——3.杨辉三角(又称帕斯卡三角形)
  18. 智慧养老之智慧养老监护平台,为智慧养老保驾护航-新导智能
  19. LTE参数RSRP、RSSI、RSRQ、RS-CINR
  20. 学会这3个Android Studio操作,保你月薪double

热门文章

  1. Google API 设计指南-兼容性
  2. 设置三个按钮等宽分布
  3. redis用zookeeper实现自动主从同步,切换
  4. Java知识积累——参数个数可变的函数(Varargs)
  5. 给我的两个小站点带点外链
  6. win7安装iis错误解决方法汇总
  7. 分割 反比 权重图 梯度 灰度_numpy gradient梯度函数1
  8. 学会拒绝别人的6个技巧_4个秘诀教你怎么拒绝别人,还能不伤和气
  9. The 9 Deep Learning Papers You Need To Know About (Understanding CNNs Part 3)
  10. Mmap的实现原理和应用