我现在有点困惑。我的代码如下:
double pc = 0.125;
double po = 0.2;
double product = pc*Math.log(pc/po);
System.out.println(product);
我希望结果是-0,025514997 相反,它输出-0.4700036292457356
问题出在哪里???
答案 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的日志