Java/Pawn 数学公式 returns 0
Java/Pawn Maths formula returns 0
谁能解释一下我做错了什么,我怎样才能使这个公式起作用?现在 returns 0 在 Java 和 Pawn 中。但它适用于 PHP,这对我来说意义不大。
int test = (65 / 65 / (1 + 25) * 10000);
在Java中,整数除法会截断结果。例如,5/2
会将 2.5
截断为 2
。
为确保您将 float
与数字常量一起使用,请在末尾添加一个 .0
,如:
int test = (65.0 / 65.0 / (1.0 + 25.0) * 10000.0);
Java乘除运算是从左到右,所以你的表达式是:
(((65 / 65) / 26) * 1000) // Clarifying parenthesis
((1 / 26) * 1000)
(0 * 1000) // integer division!
0
为避免这种情况,您只需确保将操作转换为双精度。
简单的方法就是将第一个值更改为双精度值,方法是:
int test = (65D / 65 / (1 + 25) * 10000);
或
int test = (65.0 / 65 / (1 + 25) * 10000);
但是,如果您稍后要重构代码,您可能想要更改的不仅仅是第一个值。
谁能解释一下我做错了什么,我怎样才能使这个公式起作用?现在 returns 0 在 Java 和 Pawn 中。但它适用于 PHP,这对我来说意义不大。
int test = (65 / 65 / (1 + 25) * 10000);
在Java中,整数除法会截断结果。例如,5/2
会将 2.5
截断为 2
。
为确保您将 float
与数字常量一起使用,请在末尾添加一个 .0
,如:
int test = (65.0 / 65.0 / (1.0 + 25.0) * 10000.0);
Java乘除运算是从左到右,所以你的表达式是:
(((65 / 65) / 26) * 1000) // Clarifying parenthesis
((1 / 26) * 1000)
(0 * 1000) // integer division!
0
为避免这种情况,您只需确保将操作转换为双精度。
简单的方法就是将第一个值更改为双精度值,方法是:
int test = (65D / 65 / (1 + 25) * 10000);
或
int test = (65.0 / 65 / (1 + 25) * 10000);
但是,如果您稍后要重构代码,您可能想要更改的不仅仅是第一个值。