除法运算给我错误的结果
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 正在将 3
和 2
都解释为整数。而且,由于您将一个整数除以另一个整数,因此它给您整数除法。
尝试将一个或两个更改为 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 文字值(像 2
和 3
这样的数字),并且那些没有小数位,因此 Processing 对待他们喜欢 int
价值观,他们遵守上述规则。
如果您关心小数位,则将它们存储在 float
或 double
变量中:
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
值,因此您将保留小数位。
我试图在处理中用一个数字除以另一个数字,但我总是得到错误的答案。
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 正在将 3
和 2
都解释为整数。而且,由于您将一个整数除以另一个整数,因此它给您整数除法。
尝试将一个或两个更改为 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 文字值(像 2
和 3
这样的数字),并且那些没有小数位,因此 Processing 对待他们喜欢 int
价值观,他们遵守上述规则。
如果您关心小数位,则将它们存储在 float
或 double
变量中:
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
值,因此您将保留小数位。