ES6 Math对象新增方法详解:截断、符号、立方根及三角对数运算

作者:木棉时间:2026-10-22 03:28:54浏览:179

本文详细介绍ES6中Math对象新增的方法,包括Math.trunc去除小数部分、Math.sign判断正负零、Math.cbrt计算立方根、Math.clz32统计前导零、Math.imul整数乘法、Math.fround单精度转换及Math.hypot平方和开方。此外涵盖4个对数方法(expm1, log1p, log10, log2)和6个双曲三角函数,以及ES2016新增的指数运算符**及其赋值形式**=,并提供兼容性模拟代码。

ES6 Math对象新增方法概览

本文通过实例详解ES6中Math对象新增的方法,供读者参考学习。

Math.trunc():去除小数部分

Math.trunc()

Math.trunc方法用于去除数值的小数部分,并返回其整数部分。

在尚未支持该方法的运行环境中,可通过以下代码进行模拟实现。


Math.trunc = Math.trunc || function(x) {
 return x < 0 ? Math.ceil(x) : Math.floor(x);
};

Math.sign():判断正负与零

Math.sign()

Math.sign方法用于判断数值的正负性,区分正数、负数或零。

在尚未支持该方法的运行环境中,可通过以下代码进行模拟实现。


Math.sign = Math.sign || function(x) {
 x = +x; // convert to a number
 if (x === 0 || isNaN(x)) {
  return x;
 }
 return x > 0 ? 1 : -1;
};

Math.cbrt():计算立方根

Math.cbrt()

Math.cbrt方法用于计算并返回数值的立方根。

在尚未支持该方法的运行环境中,可通过以下代码进行模拟实现。


Math.cbrt = Math.cbrt || function(x) {
 var y = Math.pow(Math.abs(x), 1/3);
 return x < 0 ? -y : y;
};

Math.clz32()、Math.imul()与Math.fround()

Math.clz32()

JavaScript中的整数采用32位二进制表示,Math.clz32方法返回一个数转换为32位无符号整数形式后的前导零个数。

Math.imul()

Math.imul方法返回两个数以32位带符号整数形式相乘的结果,返回值同样为32位带符号整数。

Math.fround()

Math.fround方法用于返回数值的单精度浮点数形式。

在尚未支持该方法的运行环境中,可通过以下代码进行模拟实现。


Math.fround = Math.fround || function(x) {
 return new Float32Array([x])[0];
};

Math.hypot():平方和的平方根

Math.hypot()

Math.hypot方法返回所有参数平方和的平方根。

ES6新增对数方法

对数方法

ES6新增了4个与对数相关的方法。

(1) Math.expm1()

Math.expm1(x)返回e的x次方减1的结果,即Math.exp(x) - 1。

在尚未支持该方法的运行环境中,可通过以下代码进行模拟实现。


Math.expm1 = Math.expm1 || function(x) {
 return Math.exp(x) - 1;
};

(2)Math.log1p()

Math.log1p(x)方法返回1加x的自然对数,即Math.log(1 + x)。若x小于-1,则返回NaN。

在尚未支持该方法的运行环境中,可通过以下代码进行模拟实现。


Math.log1p = Math.log1p || function(x) {
 return Math.log(1 + x);
};

(3)Math.log10()

Math.log10(x)返回以10为底的x的对数。若x小于0,则返回NaN。

在尚未支持该方法的运行环境中,可通过以下代码进行模拟实现。


Math.log10 = Math.log10 || function(x) {
 return Math.log(x) / Math.LN10;
};

(4)Math.log2()

Math.log2(x)返回以2为底的x的对数。若x小于0,则返回NaN。

在尚未支持该方法的运行环境中,可通过以下代码进行模拟实现。


Math.log2 = Math.log2 || function(x) {
 return Math.log(x) / Math.LN2;
};

ES6新增三角函数方法

三角函数方法

ES6新增了6个三角函数相关的方法。

Math.sinh(x) 返回x的双曲正弦(hyperbolic sine) Math.cosh(x) 返回x的双曲余弦(hyperbolic cosine) Math.tanh(x) 返回x的双曲正切(hyperbolic tangent) Math.asinh(x) 返回x的反双曲正弦(inverse hyperbolic sine) Math.acosh(x) 返回x的反双曲余弦(inverse hyperbolic cosine) Math.atanh(x) 返回x的反双曲正切(inverse hyperbolic tangent)

Math.signbit()与指数运算符**

Math.signbit()

Math.sign()用于判断数值的正负,但若参数为-0,它将返回-0。

ES2016新增了一个指数运算符(**)。

指数运算符可与等号结合,形成新的赋值运算符(**=)。


let a = 2;
a **= 2;
// 等同于 a = a * a;
let b = 3;
b **= 3;
// 等同于 b = b * b * b;

注:在vp8引擎中与Math.pow()结果存在差异。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《ECMAScript6(ES6)入门教程》、《JavaScript字符与字符串操作技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript错误与调试技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

作者最新文章