日期:2014-05-20  浏览次数:20594 次

今天在网上看到一个整数开方的算法,觉得不错,但也有些疑问。
static   int   SQRT(int   nRoot)   {
                int   nSqrt   =   0;

                for   (int   i   =   0x10000000;   i   !=   0;   i   > > =   2)   {
                        int   nTemp   =   nSqrt   +   i;
                        nSqrt   > > =   1;
                        if   (nTemp   <=   nRoot)   {
                                nRoot   -=   nTemp;
                                nSqrt   +=   i;
                        }
                }
                return   nSqrt;
        }
=========================================================
觉得很不错。

缺点就是   5开方   =   2
有没有哪位大虾   的算法支持小数的。
比如   5开方   =   2.几
支持   5.8开方的?



------解决方案--------------------
该方法对浮点数无效 :(
------解决方案--------------------
Math.pow(5, 0.5)
------解决方案--------------------
xuexi
------解决方案--------------------
您好。。。为什么你的FOR循环我写的看不懂啊。。
------解决方案--------------------
for (int i = 0x10000000; i != 0; i > > = 2) {
int nTemp = nSqrt + i;
nSqrt > > = 1;
if (nTemp <= nRoot) {
nRoot -= nTemp;
nSqrt += i;
}
}
这个for循环写得牛啊
------解决方案--------------------
要开方。lz可以用下插值法!
------解决方案--------------------
简单
在做一个处理
把小数点后面的数进行乘10的2次方的N次方 看小数点位数决定
变成整数
然后结果除以10的N次方
就可以达到你的要求
但是算法的效率就。。。。
------解决方案--------------------


------解决方案--------------------
这算法的却写的很牛!!!