当给出一行(数学相关的)代码时,java给出不正确的数学答案

时间:2016-11-22 23:14:00

标签: java math

我正在尝试在java中运行此代码

double health = ((level*level +10000) * (level/150)/6) +100;

它总是100(或最后一个数字) 在这个实例级别= 1,但即使用数字1替换变量级别也不会修复此问题。完成后,答案应该大约等于110。请帮我修复这段代码,这样我就可以继续编程了

我已经尝试将这一行分成多行单独的代码,但仍无法修复。被授予,这使用了一些相当大的分数,但它之前有效,而不是一下子就停止了工作。请帮我解决这个问题,

提前感谢。

3 个答案:

答案 0 :(得分:2)

((level*level +10000) * (level/150)/6)得到最接近的数字, 0

所以你的代码应该是这样的:

public static void main(String[] args) {

    double level = 10.0;

    double health = ((level*level +10000) * (level/150)/6) +100;

    System.out.println(health);
 }
} 

答案 1 :(得分:1)

假设levelintlevel/150将自动覆盖整数或0.您可以通过将level更改为{{1}来解决此问题},或将float更改为150

答案 2 :(得分:0)

修好了。我需要放置(双倍)前面的分数

double health = ((1*1 +10000) * ((double)1/150)/6) +100;

没有它,数字太小,程序必须假设它是0