Java 中的 Math.log() 未按预期工作

Math.log() in Java not working as expected

我现在有点困惑。我的代码如下所示:

double pc = 0.125;
double po = 0.2;  
double product = pc*Math.log(pc/po);
System.out.println(product);

我希望结果为 -0,025514997 相反,它输出 -0.4700036292457356

问题出在哪里???

Math.log(a); // log e

Math.log10(a); // base 10 

Math.log(x)/Math.log(2); // log 2

Math.log(x)/Math.log(your_own); // log your_own
public void test() {
    double pc = 0.125;
    double po = 0.2;
    System.out.println("pc * Math.log(pc / po) = " + pc * Math.log(pc / po));
    System.out.println("pc * Math.log10(pc / po) = " + pc * Math.log10(pc / po));
}

打印

pc * Math.log(pc / po) = -0.05875045365571695

pc * Math.log10(pc / po) = -0.0255149978319906

证明 a) 你的问题有问题 - pc * Math.log(pc / po) 结果是 -0.05875045365571695 而不是 -0.4700036292457356 和 b) 你需要使用 log10 来获得基础10 条日志。