Number
数值字面量   
- 最基本的数值字面量格式是十进制整数; 
- 整数还可以通过八进制或十六进制的字面值来表示;八进制字面值的第一位必须是零(0),然后是八进制数字序列(0~7)。如果字面值中的数值超出了范围,那么前导零将被忽略,后面的数值将被当作十进制数值解析; 
- var octalNum1 = 070; // 八进制的 56 var octalNum2 = 079; // 无效的八进制数值——解析为 79 var octalNum3 = 08; // 无效的八进制数值——解析为 8
- e 表示法,10的指数次幂, - 3.125e3表示- 3.125*10^3,- 3.125e-3表示- 3.125*10^-3;
- 浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数,浮点计算的误差是使用基于 IEEE754 数值的浮点计算的通病,永远不要测试某个特定的浮点数值; 
数值范围  
- ECMAScript 能够表示的最小数值保 存在 - Number.MIN_VALUE中—在大多数浏览器中,这个值是- 5e-324;
- 能够表示的最大数值保存在 - Number.MAX_VALUE中—在大多数浏览器中,该值是- 1.7976931348623157e+308;
- 超出数值范围的值,将被自动转换成特殊的 - Infinity值。负数会被转换成- -Infinity(负无穷),正数则会被转换成- Infinity(正无穷),- Infinity不能够参与计算;
- Number.NEGATIVE_INFINITY和- Number.POSITIVE_INFINITY分别保存- -Infinity和- Infinity;
- 正数除以 0 返回 - Infinity,负数除以 0 返回- -Infinity;
- isFinite()函数,检验参数是否位于最小与最大数值之间,返回- true/false;
- 监测和监控极大或极小数值的必要性; 
NaN  
- NaN的特殊性,用于表示一个本来要返回数值的操作数未返回数值的情况;
- 任何涉及 - NaN的操作(例如- NaN/10)都会返回- NaN;
- NaN与任何值都不相等,包括- NaN本身,- NaN == NaN; // false;
- 0 除以 0 才会返回 - NaN;
- typeof NaN;返回- "number";
- isNaN()函数,接受一个参数,确定这个参数是否“不是数值”。- isNaN()在接收到一个值之后,会将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串- "10"或- Boolean值。而任何不能被转换为数值的值都会导致这个函数返回- true;
数值转换  
- Number(),用于任何数据类型,一元加操作符的操作与 - Number()函数相同,转换规则如下:- 数据类型 - Number()结果 - Boolean - 0 或 1 - Null - 0 - Undefined - NaN - Number - 简单的传入和返回 - String - 空字符串,则将其转换为 0; 只包含数字,则将其转换为十进制数值,忽略前导0; 包含有效的浮点格式,则转换为对应的浮点数值; 包含有效的十六进制格式,则转换为十进制整 数值; 包含除上述格式之外的字符,则转换为 NaN - Object - 调用 - valueOf()方法,依照前面的规则转换返回的值。如果转换的结果是 NaN,则调用- toString()方法,然后再次依照前面的规则转换返回的字符串值
- Number({}); // NaN Number([]); // 0 Number([2]); // 2 Number([2,3]); // NaN
- parseInt(),string => number(整数),会忽略前面的空直至找到第一个非空格字符, - Number()函数在转换字符串时比较复杂而且不够合理,因此在处理整数的时候更常用的是- parseInt()函数,转换规则如下:- 数据类型 - parseInt()结果 - String - 空字符串,则将其转换为 NaN; 第一个字符不是数字字符或者负号,转换为 NaN; 如果第一个字符是数字字符,会继续向后解析直到结束或遇见非数字字符 以"0x"开头且后跟数字字符,就会将其当作一个十六进制整数; 以"0"开头且后跟数字字符,则会将其当作一个八进制数; 
- var num1 = parseInt("1234blue"); // 1234 var num2 = parseInt(""); // NaN var num3 = parseInt("0xA"); // 10(十六进制数) var num4 = parseInt(22.5); // 22 var num5 = parseInt("070"); // 56(八进制数) var num6 = parseInt("70"); // 70(十进制数) var num7 = parseInt("0xf"); // 15(十六进制数) var num1 = parseInt("10", 2); //2 (按二进制解析) var num2 = parseInt("10", 8); //8 (按八进制解析) var num3 = parseInt("10", 10); //10 (按十进制解析) var num4 = parseInt("10", 16); //16 (按十六进制解析)
- parseFloat(),string => number(浮点数),与 - parseInt()函数类似,但只解析十进制值,规则如下:- 数据类型 - parseInt()结果 - String - 空字符串,则将其转换为 NaN; 第一个字符不是数字字符或者负号,转换为 NaN; 如果第一个字符是数字字符,会继续向后解析直到结束或遇见非数字字符 十六进制格式的字符串则始终会被转换成 0; 如果字符串包含的是一个可解析为整数的数 - parseFloat()会返回整数;
Last updated
Was this helpful?
