Javascript只有一个单一的数字类型,它在内部被表示为64位的浮点数,和Java的double一样。不像大多数其他的编程语言,它没有分离出整数类型,所以1与1.0是相同的值。这提供了很大的方便,因为它完全避免了短整数的溢出问题,你只要知道的一切就是它是一种数字。这样就避免了一大堆因数字类型而导致的错误。

Number 对象的方法

方法 描述
toString 把数字转换为字符串,使用指定的基数。
toLocaleString 把数字转换为字符串,使用本地数字格式顺序。
toFixed 把数字转换为字符串,结果的小数点后有指定位数的数字。
toExponential 把数字转换为字符串,结果采用指数计数法,小数点后有指定位数的小数。
toPrecision 把数字转换为字符串,结果中包含指定位数的有效数字。采用指数计数法或定点计数法,由数字的大小和指定的有效数字位数决定采用哪种方法。
toSource() 代表对象的源代码
valueOf 返回一个 Number 对象的基本数字值。

Number 对象的属性

属性 描述
MAX_VALUE 可表示的最大的数。
MIN_VALUE 可表示的最小的数。
NaN 非数字值。
NEGATIVE_INFINITY 负无穷大,溢出时返回该值。
POSITIVE_INFINITY 正无穷大,溢出时返回该值。

常用函数

判断是否变量是数值类型

  1. var isNumber = function(n){
  2. return typeof n === 'number' && isFinite(n); // isFinite 判断是不是无穷大
  3. }

获取随机数(指定范围内的随机数)

  1. function getRandom(min,max) {
  2. return Math.floor(Math.random()*(max-min+1))+min;
  3. }

注意

  1. (0.1+0.2) == 0.3 // false
  2. 1 - 0.8 == 0.8 // false

JavaScript中有一个特殊的值,叫做无穷大。它表示的数字太大,JavaScript无法处理。无穷大确实是一个数字,因为在控制台中键入无穷大类型将是正确的。您还可以快速检查一个308个零的数字是否正常,但309个零太多了。准确地说,JavaScript可以处理的最大数字是1.7976931348623157e+308,最小的是5e-324。

导致 0.1 + 0.2 !== 0.3 的原因是二进制无法准确处理 0.1(二进制表示 0.0001100110011001100… 是一个无限循环,但其实并不是无限循环,最多取 52 位) 和 0.2 的显示方式。

一般可以使用 toFixed 或者 Math 去四舍五入处理,或者在计算前把小数转换成整数进行计算,算完后除以进位就可以了。