前几天看见了一个来自雷神之槌的平方根源码,原理多方有介绍,不赘述。
源码是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中使用开平方根的sqrt()方法
- js浮点数保留两位小数点示例代码(四舍五入)
- js判断输入是否为正整数、浮点数等数字的函数代码
- js浮点数精确计算(加、减、乘、除)
- javascript将浮点数转换成整数的三个方法
- 深入理解JavaScript中的浮点数
- javaScript实现浮点数转十六进制字符
- Javascript中浮点数相乘的一个解决方法
- JavaScript浮点数及运算精度调整详解
- JavaScript检查数字是否为整数或浮点数的方法
- javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】