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 就够用了;遇到复杂的科学运算再用其他两个。

你可能感兴趣的:(JS Number)