数值
1:特征:
- 不区分整数值和浮点数值
- 所有数值均采用浮点数值表示
2:整数直接量
- 除十进制外,JavaSceipt能识别十六进制、二进制和八进制
- 但在ES6严格模式下,禁止使用八进制
3:浮点数直接量
- 实数由整数部分,小数点和小数部分组成
- 指数计数法,在实数部分后跟E或者e,再跟正负号,再跟一个整数形式的指数。(512E-15)
4:算数运算
- 运算符:包括:+、-、*、/、%、**(指数运算,ES6新增)
- 溢出(overflow):当数值运算结果超过了JavaScript上限时发生,结果位infinity,若超过了负数范围,则为-infunity,基于±infinity的运算依旧为infinity。
- 下溢:当运算结果无限趋近于0、并比JS能表示的最小值还小时发生,JavaScript会返回0,当一个负数发生下溢时,会返回-0
- 被0整除:返回±infinity.
5:二进制浮点数与四舍五入错误
- 实数有无限个,但是JavaScript只能表示有限个。当JavaScript使用实数时,常常只是真实值的一个近似表示,IEEE-754浮点数表示法是一种二进制表示法,能精确表示分数,如:1/2、1/8等,但是常用的分数都是十进制,二进制不能精确表示类似0.1(1/10)这样的简单数值。如:0.3-0.2显示结果为0.999999999999999,为了避免这类问题,建议使用大整数进行等比修正。如:3-2.
6:数值转换
- JavaScript提供了三个函数可将非数值转化为数值。
Number()、parseInt()和parseFloat()。具体内容可一参考相应的文档。
7:对应与数值的应用类型
- 创建一个Number对象的构造函数:
如:let num=new Number(10);
- 常用方法:
- toString(),返回数值对象是字符串表示。
num.toString();num.toString(2)
- toLocaleString(),返回数值对象的本地字符串表示。
num=new Number(123456);num.toLocaleString();
- valueOf(),返回数值对象的原始数值。
num.valueOf();
- toFixed(n),返回包含指定小数位数的数值字符串,其中n表示小数位数。
num=new Number(10.005);num.toFixed(2);
- toExponential(n),返回科学计数法表示的数值字符串,其中n表示小数位数。
num=123;num.toExponential(3);
- toPrecision(n),返回数值最恰当的形式,其中n表示结果中数值的总位数(不包含指数)
num=99;num.toPrecision(1);num.toPrecision(3);
本质上他会根据数值和精度来调用toFixed()和toExponential()。
- toString(),返回数值对象是字符串表示。
注:为了精确小数位数的表示,以上三个方法都会四舍五入。
- Number.isFinite():用于检查一个数值是否有限,若参数类型为非数值,一律返回false。
- Number.isNaN():用于检查一个数值是否为NaN。若参数类型不是NaN,一律返回false。
- Number.parseInt()与Number.parseFloat():ES6将这两个全局方法移植到Number对象中,行为完全保持不变。
- Number.isIntger():用于判断一个数值是否为整数,如果参数不是整数,一律返回false。
- Number.EPSILON:常量,表示1与大于1的最小浮点数之间的差。
- 意义:JS中采用64为储存浮点数,大于1的最小浮点数为1.00…001,其中有51个连续的0;这个值减去1之后,就等于2的-52次方,世界上该范围表示JavaScript的最小值,从而在浮点运算时用于确定误差范围。
- 意义:JS中采用64为储存浮点数,大于1的最小浮点数为1.00…001,其中有51个连续的0;这个值减去1之后,就等于2的-52次方,世界上该范围表示JavaScript的最小值,从而在浮点运算时用于确定误差范围。