分开时输出为零?

roc*_*now 1 java math division

也许我看不到明显的事情,但是:

int x1 = 2;
int y1 = 4;
int x2 = 11;
int y2 = 7;
double res = (y2-y1)/(x2-x1);
System.out.println(res);
Run Code Online (Sandbox Code Playgroud)

输出:

0.0
Run Code Online (Sandbox Code Playgroud)

为什么?

ste*_*vls 7

问题是你在做整数运算.你需要一个类型转换才能首先将分子或分母转换为浮点数(例如):

int x1 = 2;
int y1 = 4;
int x2 = 11;
int y2 = 7;
double res = (double)(y2-y1)/(x2-x1);
System.out.println(res);
Run Code Online (Sandbox Code Playgroud)

如果对整数进行除法,则结果将截断为最接近的整数(产生与平铺操作相同的结果).例如:

0 / 2 == 0
1 / 2 == 0
2 / 2 == 1
3 / 2 == 1
Run Code Online (Sandbox Code Playgroud)

等等