计算对数

Jon*_*and 3 java math logarithm

我正在尝试编写一个方法,它接受基数k和值n到2位小数,然后计算n的日志基数k,而不使用任何Java的Math.log方法.这是我到目前为止所拥有的:

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;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试计算5.0625的日志库4时,问题出现了,它返回2.0,但应该返回1.5.

我不知道为什么这不起作用.任何帮助表示赞赏.

不,这不是功课,它是我试图解决的问题集的一部分.

How*_*ard 5

你也是i一次加入金额.因此,您很快就会达到大于实际值的值,并且永远不会再次输入while循环.

i从价值中减去一次,你会没事的:

for(double i = 1; i > .001; i /= 10) {
    while(!(Math.pow(k, value) > n )) {
        value += i;
    }
    value -= i;
}
Run Code Online (Sandbox Code Playgroud)