除法运算给我错误的结果

Division operation is giving me the wrong result

我试图在处理中用一个数字除以另一个数字,但我总是得到错误的答案。

float a;
a = 3/2;
println(a);

给我

1.0

那时答案应该是 1.5。

正在尝试不同的号码,

float a;
a = 2/3;
println(a);

给我

0.0

当答案应该是 0.666666....

有什么我想念的吗?我查看了 Processing documentation for division,似乎我使用了正确的语法。

也许 Processing 正在将 32 都解释为整数。而且,由于您将一个整数除以另一个整数,因此它给您整数除法。

尝试将一个或两个更改为 3.0 and/or 2.0

您的除法被解释为整数除法并且很可能遵循 Java 整数除法规则(因为 Processing seem to be based on Java)

Java 继承了 C 的大部分除法规则,这些在特定的 question/answer here 中有更详细的解释。

正如其他人所说,您正在使用整数除法。

请记住,int 值不能保留小数位。因此,如果您进行的计算会导致小数位,这些值将被 截断 并且您只剩下整数部分(换句话说, 整数部分)。

int x = 1;
int y = 2;
int z = x/y; //0

int x = 5;
int y = 2;
int z = x/y; //2

您正在使用 int 文字值(像 23 这样的数字),并且那些没有小数位,因此 Processing 对待他们喜欢 int 价值观,他们遵守上述规则。

如果您关心小数位,则将它们存储在 floatdouble 变量中:

float x = 1;
float y = 2;
float z = x/y; //.5

float x = 5;
float y = 2;
float z = x/y; //2.5

或者通过添加小数部分来使用 float 文字:

float a = 2.0/3.0;

处理现在知道这些是 float 值,因此您将保留小数位。