登录
首页 >  文章 >  前端

JavaScriptMath对象常用数学函数详解

时间:2026-01-25 12:21:44 157浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《JavaScript中使用Math对象进行数学计算,它提供了许多常用函数,如:Math.abs(x):返回x的绝对值 Math.ceil(x):向上取整 Math.floor(x):向下取整 Math.round(x):四舍五入 Math.max(...values):返回最大值 Math.min(...values):返回最小值 Math.sqrt(x):返回平方根 Math.pow(x, y):返回x的y次方 Math.random():返回0到1之间的随机数 这些函数可直接通过Math对象调用,是处理数学运算的常用工具。》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

Math对象提供静态数学方法:Math.round四舍五入、Math.floor向下取整、Math.ceil向上取整、Math.trunc截断小数、Math.pow或**求幂、Math.sqrt开方、Math.abs取绝对值、Math.max/min找极值;注意类型转换、边界行为及浮点精度问题。

javascript数学计算怎么做_Math对象提供了哪些常用函数?

JavaScript 数学计算直接用 Math 对象,它不是构造函数,所有方法和属性都是静态的,不能 new,也不能挂实例方法。

常用 Math 函数有哪些?对应什么场景?

这些是日常开发中最高频、最不容易记混的几个:

  • Math.round(x):四舍五入到最近整数(Math.round(2.5) === 3,注意 0.5 向上取)
  • Math.floor(x):向下取整(Math.floor(-2.7) === -3,负数也要小心)
  • Math.ceil(x):向上取整(Math.ceil(-2.1) === -2
  • Math.trunc(x):直接截断小数部分(Math.trunc(-2.9) === -2,不四舍五入也不进位)
  • Math.pow(base, exp) 或更推荐 base ** exp(ES2016+),比如 Math.pow(2, 3) === 8
  • Math.sqrt(x):开平方,Math.sqrt(-1) 返回 NaN(不是报错)
  • Math.abs(x):绝对值,对 NaN 返回 NaN,对 null 会先转成 0
  • Math.max(...arr)Math.min(...arr):找数组最大/最小值,注意要展开(Math.max([1,2,3]) 是错的,得写 Math.max(...[1,2,3])

容易踩坑的 Math 行为

很多“看似合理”的写法实际结果反直觉,尤其涉及类型转换和边界值:

  • Math.floorMath.ceilNaNundefined、非数字字符串(如 "abc")都返回 NaN;但对空字符串 ""nullfalse 会先转成 0
  • Math.random() 返回的是 [0, 1) 区间(包含 0,不包含 1),想生成 [1, 10] 整数得写 Math.floor(Math.random() * 10) + 1
  • Math.sin/Math.cos 等三角函数单位是弧度,不是角度 —— 想算 30° 的正弦得写 Math.sin(30 * Math.PI / 180)
  • Math.log(x) 是自然对数(以 e 为底),不是以 10 为底;要算常用对数得用 Math.log10(x)(ES2015+),兼容性差时可写 Math.log(x) / Math.LN10

精度问题怎么绕?别信 parseFloat 或 Number 直接算

JavaScript 使用 IEEE 754 双精度浮点数,0.1 + 0.2 !== 0.3 是经典表现。Math 本身不解决这个问题,但你可以用这些方式缓解:

  • 业务上允许误差时,用 Number((a + b).toFixed(10)) 截断(注意 toFixed 返回字符串)
  • 做金额计算时,统一转成整数分再运算:const cents = Math.round(dollars * 100)
  • 需要高精度时引入库如 decimal.js,而不是自己封装 Math 方法
  • Math.fround(x) 可模拟 32 位浮点行为(极少用),但不会改善精度,只是控制舍入方式
console.log(0.1 + 0.2); // 0.30000000000000004
console.log(Number((0.1 + 0.2).toFixed(1))); // 0.3
console.log(Math.round(123.456 * 100) / 100); // 123.46

真正麻烦的不是记不住函数名,而是忘了 Math 不处理类型校验、不抛错、对无效输入静默返回 NaN —— 这个特性在链式计算里很容易埋雷,比如 Math.sqrt(input) * 2,一旦 input 是负数或空字符串,后面整个表达式就变成 NaN 了。

终于介绍完啦!小伙伴们,这篇关于《JavaScriptMath对象常用数学函数详解》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>