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

最初にこれらの変数をdoubleとして定義する必要があり、それが機能するはずです。

于 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)以下のように2倍にキャストします。

                    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 に答える