今天在网上看到一个整数开方的算法,觉得不错,但也有些疑问。
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次方
就可以达到你的要求
但是算法的效率就。。。。
[解决办法]
强
[解决办法]
这算法的却写的很牛!!!