【重温基础】6.数字

6次阅读

共计 4734 个字符,预计需要花费 12 分钟才能阅读完成。

本文是 重温基础 系列文章的第六篇。今日感受:自己需要多总结,会有不同收获(比如今晚我做的转正总结)。
系列目录:

【复习资料】ES6/ES7/ES8/ES9 资料整理(个人整理)
【重温基础】1. 语法和数据类型
【重温基础】2. 流程控制和错误处理
【重温基础】3. 循环和迭代
【重温基础】4. 函数
【重温基础】5. 表达式和运算符

本章节复习的是 JS 中的数字类型,涉及的 API 比较多。
前置基础:在 JavaScript 中,数字为双精度浮点类型(即一个数字范围只能在 -(253-1)和 (253-1) 之间),整数类型也一样。另外数字类型也可以是以下三种符号值:

+Infinity:正无穷;

-Infinity:负无穷;

NaN:非数字(not a number);

1. 数字对象
JS 中内置了 Number 对象的一些常量属性:

属性
描述

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.MAX_VALUE 是 Number 对象的一个静态属性,值接近于 1.79E+308。大于 Number.MAX_VALUE 的值代表 “Infinity”。
let a = 100;
if(a < Number.MAX_VALUE){
console.log(‘success’);
}
// success
Number.MIN_VALUE
Number.MIN_VALUE 是 Number 对象的一个静态属性,值接近于 5e-324,是 JavaScript 里最接近 0 的正值,而不是最小的负值。
let a = 100;
if(a > Number.MIN_VALUE){
console.log(‘success’);
}
// success
Number.NaN
Number.NaN 表示“非数字”,和 NaN 一样。
Number.POSITIVE_INFINITY
Number.POSITIVE_INFINITY 属性表示正无穷大,值同全局对象 Infinity 属性的值相同。
let a = Number.MAX_VALUE * 2;
if(a == Number.POSITIVE_INFINITY){
console.log(‘success’);
}
// success
Number.NEGATIVE_INFINITY
Number.NEGATIVE_INFINITY 属性表示负无穷大,值和全局对象的 Infinity 属性的负值相同。
let a = – Number.MAX_VALUE * 2;
if(a == Number.NEGATIVE_INFINITY){
console.log(‘success’);
}
// success
Number.EPSILON
Number.EPSILON 属性表示 1 与 Number 可表示的大于 1 的最小的浮点数之间的差值,值接近于 2-52。
let a = 0.1, b = 0.2, c = 0.3;
let d = (Math.abs(a + b – c) < Number.EPSILON);
d; // true
Number.MIN_SAFE_INTEGER
JS 中最小的安全的 integer 型数字 (-(253 – 1))。
Number.MAX_SAFE_INTEGER
JS 中最大的安全的 integer 型数字 (253 – 1)。
2. 数字方法
常见的方法有:

方法
描述

Number.parseFloat()
把字符串参数解析成浮点数,和全局方法 parseFloat() 作用一致.

Number.parseInt()
把字符串解析成特定基数对应的整型数字,和全局方法 parseInt() 作用一致.

Number.isFinite()
判断传递的值是否为有限数字。

Number.isInteger()
判断传递的值是否为整数。

Number.isNaN()
判断传递的值是否为 NaN.

Number.isSafeInteger()
判断传递的值是否为安全整数。

使用方法:
Number.parseFloat()
let a1 = 3.1415, a2 = ‘3.1114’;
Number.parseFloat(a1); // 3.1415;
Number.parseFloat(a2); // 3.1111;
parseFloat(a1); // 3.1415;
parseFloat(a2); // 3.1111;
Number.parseFloat == parseFloat;// true
Number.parseInt()
let a1 = ‘0110’;
Number.parseInt(a1, 2); // 6
Number.parseInt(a1, 10); // 110
Number.parseInt = parseInt; // true
Number.isFinite()
Number.isFinite(Infinity); // false
Number.isFinite(NaN); // false
Number.isFinite(-Infinity); // false
Number.isFinite(0); // true
Number.isFinite(2e64); // true
Number.isFinite(‘0’); // false, 全局函数 isFinite(‘0’) 会返回 true
Number.isInteger()
Number.isInteger(0); // true
Number.isInteger(1); // true
Number.isInteger(-100000); // true
Number.isInteger(0.1); // false
Number.isInteger(Math.PI); // false
Number.isInteger(Infinity); // false
Number.isInteger(-Infinity); // false
Number.isInteger(“10”); // false
Number.isInteger(true); // false
Number.isInteger(false); // false
Number.isInteger([1]); // false
Number.isNaN()
Number.isNaN(NaN); // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0) // true
// 下面这几个如果使用全局的 isNaN() 时,会返回 true。
Number.isNaN(“NaN”); // false,字符串 “NaN” 不会被隐式转换成数字 NaN。
Number.isNaN(undefined); // false
Number.isNaN({}); // false
Number.isNaN(“blabla”); // false
// 下面的都返回 false
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN(37);
Number.isNaN(“37”);
Number.isNaN(“37.37”);
Number.isNaN(“”);
Number.isNaN(” “);
Number.isSafeInteger()
Number.isSafeInteger(3); // true
Number.isSafeInteger(Math.pow(2, 53)) // false
Number.isSafeInteger(Math.pow(2, 53) – 1) // true
Number.isSafeInteger(NaN); // false
Number.isSafeInteger(Infinity); // false
Number.isSafeInteger(“3″); // false
Number.isSafeInteger(3.1); // false
Number.isSafeInteger(3.0); // true
数字类型原型上的方法:

方法
描述
案例

toExponential()
返回一个数字的指数形式的字符串
1.23e+2

toFixed()
返回指定小数位数的表示形式
var a=123,b=a.toFixed(2)//b=”123.00″

toPrecision()
返回一个指定精度的数字。
a=123 中,3 会由于精度限制消失 var a=123,b=a.toPrecision(2)//b=”1.2e+2”

toExponential()
以指数表示法返回该数值字符串表示形式,可接收一个参数指定小数点后几位数字。
let a = 99.6633;
let a1 = ‘ 字符串:’ + a.toExponential(); // “ 字符串:9.96633e+1”
let a2 = ‘ 字符串:’ + a.toExponential(2);// “ 字符串:9.97e+1”
toFixed()
使用定点表示法来格式化一个数,可接收一个参数指定保留小数点后几位,取值为 0 -20 之间。注意:返回的数据类型是字符串类型。
let a = 1.2345;
a.toFixed(); // “1”
a.toFixed(2); // “1.23”
toPrecision()
以指定的精度返回该数值对象的字符串表示,可接收一个参数,用来指定有效数个数的整数。
let a = 1.2345;
let a1 = ‘ 字符串:’ + a.toPrecision(); // “ 字符串:1.2345”
let a2 = ‘ 字符串:’ + a.toPrecision(1);// “ 字符串:1”
let a2 = ‘ 字符串:’ + a.toPrecision(2);// “ 字符串:1.2”
3. 数学对象
JS 内置的数学对象 Math,有很多属性和方法,这里需要注意的是 Math 对象中的三角函数参数都是弧度制的。

方法
描述

abs()
绝对值

sin(), cos(), tan()

标准三角函数; 参数为弧度

asin(), acos(), atan(), atan2()

反三角函数; 返回值为弧度

sinh(), cosh(), tanh()

双曲三角函数; 返回值为弧度.

asinh(), acosh(), atanh()

反双曲三角函数; 返回值为弧度.

pow(), exp(), expm1(), log10(), log1p(), log2()

指数与对数函数

floor(), ceil()

返回最大 / 最小整数小于 / 大于或等于参数

min(), max()

返回一个以逗号间隔的数字参数列表中的较小或较大值(分别地)

random()
返回 0 和 1 之间的随机数。

round(),fround(), trunc()

四舍五入和截断函数

sqrt(), cbrt(), hypot()

平方根,立方根,平方参数的和的平方根

sign()
数字的符号, 说明数字是否为正、负、零。

clz32(),imul()

在 32 位 2 进制表示中,开头的 0 的数量. 返回传入的两个参数相乘结果的类 C 的 32 位表现形式

完整的描述和使用方法,建议查看 MDN Math
参考资料
1.MDN 数字和日期

本部分内容到这结束

Author
王平安

E-mail
pingan8787@qq.com

博 客
www.pingan8787.com

微 信
pingan8787

每日文章推荐
https://github.com/pingan8787…

ES 小册
es.pingan8787.com

正文完
 0