JS Number

和其他语言,例如 Java 和 Python 不同,JS 的所有数字,包括整数和小数都只有一种类型 - Number(IEEE 754)。它使用 64 位固定长度来表示,也就是 double 双精度浮点数。也就是 JS 没有 float 32位的单精度。

64位比特分为三部分:符号位;指数位;尾数位。

  • 符号位S:第 1 位是正负数符号位(sign),0代表正数,1代表负数
  • 指数位E:中间的 11 位存储指数(exponent),用来表示多少次方
  • 尾数位M:最后的 52 位是尾数(mantissa),超出的部分自动进一舍零
number

更多参考这一篇详细的文章.

JS 里有三个不错的处理大数的包:big.js; bignumber.js; decimal.js

他们的详细比较看这里。这三个包,外加这篇比较文章都是同一个开发者 :) 。简单来说

  • big.js: 使用最简单,最小巧;但是只有十进制,不处理 NaN 和 Infinity 等;
  • bignumber.js: 2-64 进制都支持,支持更多方法,文件大小是 big.js 的2倍;
  • decimal.js: 2-64 进制都支持,非整数的指数运算, exp, ln, log; 随机数等等;

所以,大部分时候 big.js 就够用了;遇到复杂的科学运算再用其他两个。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容