需要帮助将此等式移植到java

时间:2013-08-14 22:06:37

标签: java algorithm math

我正在尝试制作一个程序来计算游戏中所需的分数水平,并且方程式在我的计算器上工作正常,但是当我尝试将其更改为使用java时则不行。 等式 5,000 / 3 *(4n ^ 3 - 3n ^ 2 - n)+ 1.25 * 1.8 ^(n - 60)例如49级你应该需要总分772240000点而计算器给出了这个答案,但我的java程序没有。这是我试过的代码。

for (int i = 0; i <= 100; i++) {
        double score = (double) ((5000 / 3) * (Math.pow(4 * i, 3) - Math.pow(3 * i, 2) - i) + (1.25 * Math.pow(1.8, i - 60)));
        System.out.println("Level " + i + " requires " + (long) score);
    }

这似乎没有用,并且给了12513130000作为lvl 49的必需点。如果有人能够让它工作,你会解释我做错了什么。

2 个答案:

答案 0 :(得分:4)

你的问题在Math.pow中 - 你每次都将你的索引值乘以标量。

4 * Math.pow(i, 3)

3 * Math.pow(i, 2)

应该修理它。

编辑:以及其他答案中提到的整数除法。

答案 1 :(得分:4)

你弄乱了Math.pow来电,但你可以完全避免其中的一些:

double score = (double) ((5000 / 3) * (4 * i * i * i - 3 * i * i - i) + (1.25 * Math.pow(1.8, i - 60)));

以下是错误的:Math.pow(4 * i, 3)实际上是(4i)^3不是 4(i^3)。要做到后者,您需要以下内容:

4 * Math.pow(i, 3)

我不完全确定整数除法部分( 将其转换为double),但您可能需要将5000 / 3更改为5000.0 / 3 }。