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操作 input type=checkbox的实现代码
Jun 14 Javascript
删除select中所有option选项jquery代码
Aug 12 Javascript
选择复选框按钮置灰否则按钮可用
May 22 Javascript
一道关于JavaScript变量作用域的面试题
Mar 08 Javascript
Bootstrap按钮下拉菜单组件详解
May 10 Javascript
JS实现间歇滚动的运动效果实例
Dec 22 Javascript
微信小程序中实现一对多发消息详解及实例代码
Feb 14 Javascript
js仿淘宝评价评分功能
Feb 28 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
Sep 12 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
Aug 10 Javascript
Vue 3.0中jsx语法的使用
Nov 13 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 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还会继续执行么
2016/05/17 PHP
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
通过遮罩层实现浮层DIV登录的js代码
2014/02/07 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
JQuery基础语法小结
2015/02/27 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
解决layui中的form表单与button的点击事件冲突问题
2018/08/15 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
2018/09/07 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
JavaScript中数组去重的5种方法
2020/07/04 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
[42:24]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第三场 11.27
2020/12/01 DOTA
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
浅谈Python中的bs4基础
2018/10/21 Python
python利用Tesseract识别验证码的方法示例
2019/01/21 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
详解Django模版中加载静态文件配置方法
2019/07/21 Python
Django实现celery定时任务过程解析
2020/04/21 Python
python在地图上画比例的实例详解
2020/11/13 Python
英国领先的办公用品供应商:Viking
2016/08/01 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
幼儿园教研活动总结
2014/04/30 职场文书
讲文明树新风演讲稿
2014/05/12 职场文书
校长竞聘演讲稿
2014/05/16 职场文书
商铺租房协议书范本
2014/12/04 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
Python中Cookies导出某站用户数据的方法
2021/05/17 Python