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 相关文章推荐
基于jquery的一行代码轻松实现拖动效果
Dec 28 Javascript
Jquery颜色选择器ColorPicker实现代码
Nov 14 Javascript
中文字符串截取的js函数代码
Apr 17 Javascript
JQuery.Ajax之错误调试帮助信息介绍
Jul 04 Javascript
jQuery淡入淡出元素让其效果更为生动
Sep 01 Javascript
浅谈javascript中遇到的字符串对象处理
Nov 18 Javascript
angular 动态组件类型详解(四种组件类型)
Feb 22 Javascript
JavaScript下拉菜单功能实例代码
Mar 01 Javascript
微信小程序实现循环动画效果
Jul 16 Javascript
基于vue的验证码组件的示例代码
Jan 22 Javascript
聊聊vue 中的v-on参数问题
Jan 29 Vue.js
Vite和Vue CLI的优劣
Jan 30 Vue.js
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桌面中心(三) 修改数据库
2007/03/11 PHP
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
PHP中Date获取时间不正确怎么办
2008/06/05 PHP
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
js调用后台servlet方法实例
2013/06/09 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
angular中实现控制器之间传递参数的方式
2017/04/24 Javascript
angularjs $http实现form表单提交示例
2017/06/09 Javascript
vue如何判断dom的class
2018/04/26 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
element-ui 中使用upload多文件上传只请求一次接口
2019/07/19 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
Python的迭代器和生成器使用实例
2015/01/14 Python
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
替换python字典中的key值方法
2018/07/06 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
python函数参数(必须参数、可变参数、关键字参数)
2019/08/16 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
用CSS3实现无限循环的无缝滚动的示例代码
2017/11/01 HTML / CSS
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
财务管理个人自荐书范文
2013/11/24 职场文书
留学生如何写好自荐信
2013/12/27 职场文书
自查自纠整改报告
2014/11/06 职场文书
2014年司法局工作总结
2014/12/11 职场文书
大雁塔英文导游词
2015/02/10 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书
导游词之镜泊湖
2019/12/09 职场文书
zabbix agent2 监控oracle数据库的方法
2021/05/13 Oracle