有人可以解释一下我在这里做错了什么,我怎样才能使这个公式有效?现在它在Java和Pawn中返回0。但它适用于PHP,对我来说没有多大意义。
int test = (65 / 65 / (1 + 25) * 10000);
答案 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);
但是,如果您稍后重构代码,则可能需要更改的不仅仅是第一个值。