乘法和除法给出了意想不到的结果

时间:2015-02-14 18:08:53

标签: java math

为什么在这样的for循环中这个简单的操作会返回0.0?

totaalPunten += (moduleScore * (double)(moduleStudiePunten/totaalStudiepunten));

如果totaalPunten在for循环之外的双重初始化为0,则moduleScore(即12.0)和moduleStudiePunten(即6)如下:

double moduleScore = entry.getValue().getScore();
int moduleStudiePunten = entry.getValue().getAantalStudiePunten();

条目是一个HashMap条目。 totaalStudiepunten是一个总是30的int。 我甚至不确定是否应该将(moduleStudiePunten / totaalStudiepunten)转换为double。无论哪种方式,我都不知道这是如何运作的。它与递增的方式有关吗?考虑到我从C#(学生)开始熟悉它,我很可能在Java中犯了一个大错误。

1 个答案:

答案 0 :(得分:0)

更改以下行:

totaalPunten += (moduleScore * (double)(moduleStudiePunten/totaalStudiepunten));

要:

totaalPunten += (moduleScore * (moduleStudiePunten / (double) totaalStudiepunten));

我跑步时的输出来自2.4000000000000004