Java / Pawn Maths公式返回0

时间:2015-03-06 02:19:57

标签: java math formula

有人可以解释一下我在这里做错了什么,我怎样才能使这个公式有效?现在它在Java和Pawn中返回0。但它适用于PHP,对我来说没有多大意义。

int test = (65 / 65 / (1 + 25) * 10000);

2 个答案:

答案 0 :(得分:2)

在Java中,整数除法将截断结果。例如,5/2会将2.5截断为2

为确保您使用float数字常量,请在最后添加.0,如下所示:

int test = (65.0 / 65.0 / (1.0 + 25.0) * 10000.0);

答案 1 :(得分:2)

乘法和除法的Java运算从左到右,所以你的表达式实际上是:

(((65 / 65) / 26) * 1000)  // Clarifying parenthesis
((1 / 26) * 1000)          
(0 * 1000)                 // integer division!
0

为避免这种情况,您只需确保将操作转换为double。

简单的方法是将第一个值改为double,或者通过:

int test = (65D / 65 / (1 + 25) * 10000);

int test = (65.0 / 65 / (1 + 25) * 10000);

但是,如果您稍后重构代码,则可能需要更改的不仅仅是第一个值。