当前位置:首页 > JavaScript

js实现sqrt(num)

2026-02-03 08:26:42JavaScript

实现 sqrt(num) 的方法

使用 Math.sqrt()

JavaScript 内置的 Math.sqrt() 方法可以直接计算平方根:

const num = 16;
const result = Math.sqrt(num); // 返回 4

牛顿迭代法

牛顿迭代法是一种数值逼近方法,适用于手动实现平方根计算:

function sqrtNewton(num, precision = 0.0001) {
    let guess = num / 2;
    while (Math.abs(guess * guess - num) > precision) {
        guess = (guess + num / guess) / 2;
    }
    return guess;
}

const result = sqrtNewton(25); // 返回约 5.000000000016778

二分查找法

二分查找法通过逐步缩小范围逼近平方根:

function sqrtBinarySearch(num, precision = 0.0001) {
    let low = 0;
    let high = num;
    let mid = (low + high) / 2;

    while (Math.abs(mid * mid - num) > precision) {
        if (mid * mid > num) {
            high = mid;
        } else {
            low = mid;
        }
        mid = (low + high) / 2;
    }
    return mid;
}

const result = sqrtBinarySearch(9); // 返回约 3.000091552734375

指数与对数方法

利用数学恒等式 sqrt(num) = num^(1/2),通过 Math.pow() 或对数计算:

function sqrtPow(num) {
    return Math.pow(num, 0.5);
}

function sqrtLog(num) {
    return Math.exp(0.5 * Math.log(num));
}

const result1 = sqrtPow(36); // 返回 6
const result2 = sqrtLog(49); // 返回 7

注意事项

  • 输入验证:确保 num 是非负数,否则返回 NaN 或抛出错误。
  • 精度控制:牛顿迭代法和二分查找法需指定 precision 参数控制精度。
  • 性能:内置 Math.sqrt() 性能最优,手动实现适用于特定场景(如教学或限制环境)。

js实现sqrt(num)

标签: jssqrt
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue…

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Pa…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…