计算对数
|
我正在尝试编写一种方法,该方法将基数k和值n保留为2个小数位,然后在不使用任何Java \ Math.log方法的情况下计算n的对数基数k。这是我到目前为止的内容:
public static double log(double k, double n) {
double value = 0.0;
for(double i = 1; i > .001; i /= 10) {
while(!(Math.pow(k, value) >= n )) {
value += i;
}
}
return value;
}
当我尝试计算5.0625的日志基数4(返回2.0,但应该返回1.5)时出现问题。
我不知道为什么这不起作用。任何帮助表示赞赏。
不,这不是功课,它是我要解决的一系列问题的一部分。
没有找到相关结果
已邀请:
5 个回复
扭湘阀柿蹄
,就可以了:
皇小福另届
现在,您的值为2.0。但是,在代码中的任何时候,您都没有办法向另一个方向进行修正。您需要检查超调和欠调情况。
席酱
太过分了。仅在超过正确值后才停止。因此,在计算该位置时,1不够,所以升至2.0,随后的所有测试均表明,该位置至少足够,因此该位置结束。
琶竞捆栓
咳累录酬
,所以它应该收敛很快并且使用较少的CPU资源。