也许我看不到明显的事情,但是:
int x1 = 2;
int y1 = 4;
int x2 = 11;
int y2 = 7;
double res = (y2-y1)/(x2-x1);
System.out.println(res);
输出:
0.0
为什么?
答案 0 :(得分:7)
问题是你在做整数运算。你需要一个类型转换才能首先将分子或分母转换为浮点数(例如):
int x1 = 2;
int y1 = 4;
int x2 = 11;
int y2 = 7;
double res = (double)(y2-y1)/(x2-x1);
System.out.println(res);
如果对整数进行除法,则结果将被截断为最接近的整数(产生与平铺操作相同的结果)。例如:
0 / 2 == 0
1 / 2 == 0
2 / 2 == 1
3 / 2 == 1
等
答案 1 :(得分:1)
你需要首先将这些变量定义为双精度,它应该可以工作。
答案 2 :(得分:1)
试
int x1 = 2;
int y1 = 4;
int x2 = 11;
int y2 = 7;
double res = (double)(y2-y1)/(x2-x1);
System.out.println(res);
你必须在“执行”操作时将其打包,而不是在
之后答案 3 :(得分:0)
将(y2-y1)/(x2-x1)
转换为如下所示加倍:
int x1 = 2;
int y1 = 4;
int x2 = 11;
int y2 = 7;
double res = (double)(y2-y1)/(x2-x1);
System.out.println(res);
Output: 0.3333333333333333