Java复杂的Math.log函数给出了错误的答案

时间:2014-08-26 16:35:24

标签: java math logarithm

我正在运行以下功能来模拟潮流。

Math.log( (1000 * d) / ((1000 * d) - p )) / Math.log(1000/999);

我正在使用p

的不同值进行两次测试

两者:

p = 1333

测试1:

d = 1000000

测试2:

d = 200000

在java中运行,都返回Infinity

如果我将等式放入谷歌,它会返回我期望的值。 (测试1为1386,测试2为162)

Google中的公式为

ln( (1000 * (1333)) / ((1000 * (1333)) - (200000) )) / ln(1000/999)

我做错了什么?

1 个答案:

答案 0 :(得分:6)

您正在使用1000/999执行Java的整数除法,这必须导致另一个int,即11的对数(任何基数)为0,除以0Infinity

使用double文字或将其中一个int文字投放为double

Math.log(1000.0 / 999.0)

Math.log( (double) 1000 / 999)