1

也许我看不到明显的东西,但是:

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

输出:

0.0

为什么?

4

4 回答 4

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

等等

于 2012-10-30T23:17:43.640 回答
1

您需要最初将这些变量定义为双精度数,它应该可以工作。

于 2012-10-30T23:17:54.317 回答
1

尝试

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

您必须在“同时”进行操作时将其装箱,而不是在之后

于 2012-10-30T23:19:45.050 回答
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
于 2012-10-30T23:18:34.937 回答