需要帮助将这个等式移植到java吗

需要帮助将这个等式移植到java吗,java,algorithm,math,Java,Algorithm,Math,我正在尝试制作一个程序,计算游戏中所需的分数,这个公式在我的计算器上运行良好,但当我尝试将其更改为使用java时就不行了。 方程式是5000/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 *

我正在尝试制作一个程序,计算游戏中所需的分数,这个公式在我的计算器上运行良好,但当我尝试将其更改为使用java时就不行了。 方程式是5000/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);
    }

这似乎不起作用,49级的分数为12513130000。如果有人能让它工作,你能解释一下我做错了什么吗。

你的问题在Math.pow里面-你每次都在用一个标量乘以你的索引值

4 * Math.pow(i, 3)

你应该把它修好

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

你把Math.pow调用搞乱了,但是你可以完全避免其中一些调用:

double score = (double) ((5000 / 3) * (4 * i * i * i - 3 * i * i - i) + (1.25 * Math.pow(1.8, i - 60)));
问题是:Math.pow4*i,3实际上是4i^3,而不是4i^3。要执行后一种操作,您需要以下几点:

4 * Math.pow(i, 3)

我不能完全确定您要将其转换为双精度的整数除法部分,但您可能必须将5000/3更改为5000.0/3。

5000/3是整数除法,您也可以删除双精度。实际上,你说的是doubleint*double+double,括号中的结果已经是double了,所以演员阵容不会有太大作用。已经有足够多的人提到了整数除法问题。谢谢,在这之后,它现在工作得很好,并且将5000改为5000.0。@Ephyxia,太好了;既然我的回答解决了你的问题,你介意接受我的回答吗?
4 * Math.pow(i, 3)