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 条日志。
我现在有点困惑。我的代码如下所示:
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 条日志。