数字对象(Number)
JavaScript 数字对象主要涉及到 Number
对象,它提供了处理和操作数值的多种方法和属性。
在 JavaScript 中,数值类型(number)是原始类型。
数字常量属性
内置的 Number
对象有一些有关数字的常量属性,如最大值、不是一个数字和无穷大的。
Number.MAX_VALUE
: JavaScript 能表示的最大数值。Number.MIN_VALUE
: JavaScript 能表示的最小正数。Number.POSITIVE_INFINITY
: 正无穷大。Number.NEGATIVE_INFINITY
: 负无穷大。Number.NaN
: 表示 “不是一个数字”(Not-a-Number)。
console.log(Number.MAX_VALUE); // 输出: 1.7976931348623157e+308
console.log(Number.MIN_VALUE); // 输出: 5e-324
console.log(Number.POSITIVE_INFINITY); // 输出: Infinity
console.log(Number.NEGATIVE_INFINITY); // 输出: -Infinity
console.log(Number.NaN); // 输出: NaN
数字静态方法
Number
对象提供了一些静态方法,用于数值的处理和转换:
**Number.isFinite(value)**
判断一个值是否是有限数值。
console.log(Number.isFinite(123)); // 输出: true
console.log(Number.isFinite(Infinity)); // 输出: false
console.log(Number.isFinite(NaN)); // 输出: false
**Number.isInteger(value)**
判断一个值是否是整数。
console.log(Number.isInteger(123)); // 输出: true
console.log(Number.isInteger(123.45)); // 输出: false
**Number.isNaN(value)**
判断一个值是否是 NaN
。
console.log(Number.isNaN(NaN)); // 输出: true
console.log(Number.isNaN(123)); // 输出: false
**Number.isSafeInteger(value)**
判断一个值是否是一个安全整数(安全整数是指在 JavaScript 中能安全表示的范围内的整数)。
console.log(Number.isSafeInteger(123)); // 输出: true
console.log(Number.isSafeInteger(Math.pow(2, 53))); // 输出: false
**Number.parseFloat(string)**
将字符串解析为浮点数。
console.log(Number.parseFloat("123.45")); // 输出: 123.45
console.log(Number.parseFloat("123abc")); // 输出: 123
**Number.parseInt(string, [radix])**
将字符串解析为整数,第二个参数可以指定基数。
console.log(Number.parseInt("123")); // 输出: 123
console.log(Number.parseInt("111", 2)); // 输出: 7 (二进制转换为十进制)
数字实例方法
Number
对象还提供了用于实例的方法:
**toFixed(digits)**
将数字格式化为指定小数位数的字符串。
const num = 123.456;
console.log(num.toFixed(2)); // 输出: "123.46"
**toExponential(digits)**
将数字格式化为指数计数法表示的字符串,并指定小数位数。
console.log(num.toExponential(2)); // 输出: "1.23e+2"
**toPrecision(digits)**
将数字格式化为指定长度的字符串。
console.log(num.toPrecision(4)); // 输出: "123.5"
**toString([radix])**
将数字转换为指定基数的字符串。
const num2 = 255;
console.log(num2.toString(2)); // 输出: "11111111" (二进制)
console.log(num2.toString(16)); // 输出: "ff" (十六进制)
数学对象(Math)
JavaScript 的 Math
对象提供了一组用于执行数学运算的属性和方法。Math
对象不需要实例化,可以直接调用其中的属性和方法(不能够创建Math 对象)。
常量
Math
对象包含一些常用的数学常量:
Math.PI
: 圆周率 (π),约为 3.14159。Math.E
: 自然对数的底数 (e),约为 2.718。Math.LN2
: 2 的自然对数,约为 0.693。Math.LN10
: 10 的自然对数,约为 2.302。Math.LOG2E
: 以 2 为底的 e 的对数,约为 1.442。Math.LOG10E
: 以 10 为底的 e 的对数,约为 0.434。Math.SQRT1_2
: 1/2 的平方根,约为 0.707。Math.SQRT2
: 2 的平方根,约为 1.414。
方法
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 位表现形式 |
综合实例:
const num = -5;
console.log('绝对值:', Math.abs(num)); // 输出: 5
const numbers = [1, 2, 3, 4, 5];
console.log('最大值:', Math.max(...numbers)); // 输出: 5
console.log('最小值:', Math.min(...numbers)); // 输出: 1
console.log('2 的 3 次幂:', Math.pow(2, 3)); // 输出: 8
console.log('16 的平方根:', Math.sqrt(16)); // 输出: 4
const floatNum = 4.7;
console.log('向上取整:', Math.ceil(floatNum)); // 输出: 5
console.log('向下取整:', Math.floor(floatNum)); // 输出: 4
console.log('四舍五入:', Math.round(floatNum)); // 输出: 5
console.log('去掉小数部分:', Math.trunc(floatNum)); // 输出: 4
const radians = Math.PI / 2;
console.log('正弦值:', Math.sin(radians)); // 输出: 1
console.log('余弦值:', Math.cos(Math.PI)); // 输出: -1
console.log('正切值:', Math.tan(Math.PI / 4)); // 输出: 1
console.log('e 的 1 次幂:', Math.exp(1)); // 输出: 2.718281828459045
console.log('自然对数:', Math.log(Math.E)); // 输出: 1
console.log('以 10 为底的对数:', Math.log10(100)); // 输出: 2
console.log('随机数:', Math.random()); // 输出: 例如 0.123456789