当前位置:首页 > JavaScript

js math实现

2026-03-13 17:39:23JavaScript

数学运算基础

JavaScript 提供基础的数学运算符:

  • 加法 +
  • 减法 -
  • 乘法 *
  • 除法 /
  • 取余 %
  • 指数

示例:

const sum = 3 + 5; // 8  
const power = 2  3; // 8 (2的3次方)  

Math 对象常用方法

JavaScript 内置 Math 对象提供高级数学函数:

取整函数

  • Math.floor():向下取整
  • Math.ceil():向上取整
  • Math.round():四舍五入
  • Math.trunc():直接截断小数部分

示例:

Math.floor(3.7); // 3  
Math.ceil(3.2);  // 4  

随机数生成

  • Math.random():生成 [0, 1) 之间的随机数。
    扩展为指定范围:
    function randomInRange(min, max) {  
    return Math.floor(Math.random() * (max - min + 1)) + min;  
    }  

三角函数与对数

  • Math.sin(), Math.cos(), Math.tan()
  • Math.log(), Math.log10()

数值处理与精度

浮点数精度问题
由于二进制浮点数表示,可能出现精度误差:

0.1 + 0.2 === 0.3; // false  

解决方案:

  • 使用 toFixed() 控制小数位数(返回字符串):
    (0.1 + 0.2).toFixed(2); // "0.30"  
  • 转换为整数运算后再还原:
    (0.1 * 10 + 0.2 * 10) / 10; // 0.3  

高级数学库

对于复杂计算(如矩阵运算、统计),可使用第三方库:

  • Math.js:支持符号计算、单位转换等。
    安装:
    npm install mathjs  

    示例:

    import { sqrt, evaluate } from 'mathjs';  
    sqrt(-4); // 2i (复数结果)  
    evaluate('1.2 * (2 + 4.5)'); // 7.8  

实际应用示例

计算两点间距离

function distance(x1, y1, x2, y2) {  
  return Math.sqrt((x2 - x1)  2 + (y2 - y1)  2);  
}  

生成随机颜色

js math实现

function randomHexColor() {  
  return `#${Math.floor(Math.random() * 0xffffff).toString(16).padStart(6, '0')}`;  
}  

标签: jsmath
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…