一、在JavaScript中,Number类型为双精度 IEEE 754 64 位浮点类型。
二、内置的Number对象有一些关于数字的常量属性,如最大值、不是一个数字和无穷大的。你不能改变这些属性,但可以按下边的方式使用它们
var biggestNum = Number.MAX_VALUE;
var smallestNum = Number.MIN_VALUE;
var infiniteNum = Number.POSITIVE_INFINITY;
var negInfiniteNum = Number.NEGATIVE_INFINITY;
var notANum = Number.NaN;
数字的属性
属性 | 描述 |
---|---|
Number.MAX_VALUE | 可表示的最大值 |
Number.MIN_VALUE | 可表示的最小值 |
Number.NaN | 特指”非数字“ |
Number.NEGATIVE_INFINITY | 特指“负无穷”;在溢出时返回 |
Number.POSITIVE_INFINITY | 特指“正无穷”;在溢出时返回 |
Number.EPSILON | 表示1和比最接近1且大于1的最小Number之间的差别 |
Number.MIN_SAFE_INTEGER | JavaScript最小安全整数. |
Number.MAX_SAFE_INTEGER | JavaScript最大安全整数. |
Number.MAX_VALUE、Number.MIN_VALUE
一、JavaScript中最大的浮点数是Number.MAX_VALUE,最小的浮点数是Number.MIN_VALUE
Number.EPSILON
一、Number.EPSILON属性表示1与Number可表示的大于1的最小的浮点数之间的差值。
二、EPSILON 属性的值接近于 2.2204460492503130808472633361816E-16,或者 2^-52。
| 【示例】测试是否相等```javascript x = 0.2 y = 0.3 z = 0.1 0.1 + 0.2 == 0.3 // false equal = (Math.abs(x - y + z) < Number.EPSILON) // true
|
| --- |
<a name="xlGd3"></a>
# 数字的方法
| 方法 | 描述 |
| --- | --- |
| Number.parseFloat() | 把字符串参数解析成浮点数,和全局方法parseFloat() 作用一致. |
| Number.parseInt() | 把字符串解析成特定基数对应的整型数字,和全局方法 parseInt() 作用一致. |
| Number.isFinite() | 判断传递的值是否为有限数字。 |
| Number.isInteger() | 判断传递的值是否为整数。 |
| Number.isNaN() | 判断传递的值是否为 NaN |
| [Number.isSafeInteger()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger) | 判断传递的值是否为安全整数 |
<a name="SotT0"></a>
## parseInt 和 parseFloat
一、ES6 将全局方法parseInt()和parseFloat(),移植到 Number 对象上面,行为完全保持不变。<br />二、在现实生活中,我们经常会有带有单位的值,例如 CSS 中的"100px"或"12pt"。并且,在很多国家,货币符号是紧随金额之后的,所以我们有"19€",并希望从中提取出一个数值。<br />1、这就是parseInt和parseFloat的作用。<br />2、它们可以从字符串中“读取”数字,直到无法读取为止。如果发生 error,则返回收集到的数字。
<a name="uhUJG"></a>
### parseInt(str, radix)
[parseInt](https://www.yuque.com/webfront/js/wc02bt?view=doc_embed)
<a name="co12k"></a>
### parseFloat
一、parseFloat返回一个浮点数:
```javascript
alert( parseFloat('12.5em') ); // 12.5
alert( parseFloat('12.3.4') ); // 12.3,在第二个点出停止了读取
二、某些情况下,parseInt/parseFloat会返回NaN。当没有数字可读时会发生这种情况:
alert( parseInt('a123') ); // NaN,第一个符号停止了读取
alert( parseInt('') ); // NaN
isFinite 和 isNaN
一、两个特殊的数值
- Infinity(和-Infinity):是一个特殊的数值,比任何数值都大(小)。
- NaN:代表一个 error。
1、它们属于number类型,但不是“普通”数字,因此,这里有用于检查它们的特殊函数:
- isFinite(value)
- isNaN(value)
三、这是es6中Number数字类型新增的方法,与传统的全局方法isFinite()和isNaN()的区别在于:
1、传统方法先调用Number()将非数值的值转为数值,再进行判断
2、而这两个新方法只对数值有效,非数值一律返回false
isFinite(value)
一、isFinite(value)将其参数转换为数字,如果是常规数字,则返回true,而不是NaN/Infinity/-Infinity:
alert( isFinite("15") ); // true
alert( isFinite("str") ); // false,因为是一个特殊的值:NaN
alert( isFinite(Infinity) ); // false,因为是一个特殊的值:Infinity
alert( isFinite(-Infinity) ); // false
二、有时isFinite被用于验证字符串值是否为常规数字:
let num = +prompt("Enter a number", '');
// 结果会是 true,除非你输入的是 Infinity、-Infinity 或不是数字
alert( isFinite(num) );
三、在所有数字函数中,包括isFinite,空字符串或仅有空格的字符串均被视为0。
isNaN(value)
Number.isInteger()
一、ES6的Number.isInteger()方法用来表示给定的参数是否为整数。
- integer/ˈɪntɪdʒə(r)/
| 【示例】如何检测一个值是否是整数
1、ES6:Number.isInteger()```javascript Number.isInteger(1.000); //true Number.isInteger(1); //true Number.isInteger(‘1’); //false
| | —- |2、ES5,写个pollyfill```javascript if(!Number.isInterger){ Number.isInterger = function(num){ return (typeof num === 'number') && num%1 === 0; } }
数字类型原型上的方法
方法 | 描述 | 示例 |
---|---|---|
Number.prototype.toExponential() | 返回一个数字的指数形式的字符串 | var a = 123, b = a.toExponential(); // 1.23e+2 |
Number.prototype.toFixed() | 返回指定小数位数的表示形式 | var a=123, b = a.toFixed(2); // b=”123.00” |
Number.prototype.toPrecision() | 返回一个指定精度的数字 | var a=123, // 3会由于精度限制消失 b=a.toPrecision(2); // b=”1.2e+2” |