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

时间:2015-06-24 13:53:23

标签: java math logarithm

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

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

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

问题出在哪里???

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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的日志