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 | 正无穷大,溢出时返回该值。 |
常用函数
判断是否变量是数值类型
var isNumber = function(n){return typeof n === 'number' && isFinite(n); // isFinite 判断是不是无穷大}
获取随机数(指定范围内的随机数)
function getRandom(min,max) {return Math.floor(Math.random()*(max-min+1))+min;}
注意
(0.1+0.2) == 0.3 // false1 - 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 去四舍五入处理,或者在计算前把小数转换成整数进行计算,算完后除以进位就可以了。
