JavaScript实现算术平方根算法-代码超简单


Posted in Javascript onSeptember 11, 2015

前几天看见了一个来自雷神之槌的平方根源码,原理多方有介绍,不赘述。

源码是c语言写的,我思考后发现这样的算法在javascript中也是可以完成的。

function InvSqrt(x){
  var h=0.5*x;
  var b=new ArrayBuffer(4);
  var d=new DataView(b,0);
  d.setFloat32(0,x);
  var i=d.getInt32(0);
  i=0x5f375a86-(i>>1);
  d.setInt32(0,i);
  var r=d.getFloat32(0);
  r=r*(1.5-h*r*r);
  return r;
}

测试:

console.time("t");
for(var i=0;i<10000000;i++){
 InvSqrt(i);
}
console.timeEnd("t");

console.time("t");
for(var i=0;i<10000000;i++){
 1/Math.sqrt(i);
}
console.timeEnd("t");
VM2303:18 t: 33438.000ms
VM2303:24 t: 16720.000ms

虽然结果还是比系统库慢,而且精度本来就低。不过我很满意。

以上就是用javascript实现算术平方根算法算法,怎么样,代码很简单吧,需要的朋友快来学习吧。!

Javascript 相关文章推荐
一些主流JS框架中DOMReady事件的实现小结
Feb 12 Javascript
30个精美的jQuery幻灯片效果插件和教程
Aug 23 Javascript
详述JavaScript实现继承的几种方式(推荐)
Mar 22 Javascript
针对JavaScript中this指向的简单理解
Aug 26 Javascript
Actionscript与javascript交互实例程序(修改)
Sep 22 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
Dec 21 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
Feb 10 Javascript
各种选择框jQuery的选中方法(实例讲解)
Jun 27 jQuery
一个简易的js图片轮播效果
Jul 22 Javascript
Angular4学习教程之DOM属性绑定详解
Jan 04 Javascript
vue 解决文本框被键盘遮住的问题
Nov 06 Javascript
修改vue源码实现动态路由缓存的方法
Jan 21 Javascript
js图片卷帘门导航菜单特效代码分享
Sep 10 #Javascript
jQuery超精致图片轮播幻灯片特效代码分享
Sep 10 #Javascript
手机端转盘抽奖代码分享
Sep 10 #Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
Sep 10 #Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
Sep 10 #Javascript
JS+CSS实现电子商务网站导航模板效果代码
Sep 10 #Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
Sep 10 #Javascript
You might like
PHP无法访问远程mysql的问题分析及解决
2013/05/16 PHP
php实现爬取和分析知乎用户数据
2016/01/26 PHP
Jquery 弹出层插件实现代码
2009/10/24 Javascript
js+css简单实现网页换肤效果
2015/12/29 Javascript
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
2017/06/20 Javascript
简单谈谈原生js的math对象
2017/06/27 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
Python中itertools模块用法详解
2014/09/25 Python
python删除不需要的python文件方法
2018/04/24 Python
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
Python中交换两个元素的实现方法
2018/06/29 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
Python Django简单实现session登录注销过程详解
2019/08/06 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
python实现加密的方式总结
2020/01/19 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
使用Python+selenium实现第一个自动化测试脚本
2020/03/17 Python
Python使用re模块验证危险字符
2020/05/21 Python
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
九年级政治教学反思
2014/02/06 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
opencv检测动态物体的实现
2021/07/21 Python
JS封装cavans多种滤镜组件
2022/02/15 Javascript
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js