68

友達が授業の課題としてなんらかの計算をしようとしているのですが、困っています…お役に立てれば幸いです。

問題は、彼がユーザーからintとして入力を受け取ることです(そうする必要があります、それはタスクの一部です)。彼は以下のコードでそれをdoubleに変換しようとしていますが、これは機能しません。結果はとにかくintです。

double firstSolution = ((b1 * a22 - b2 * a12) / (a11 * a22 - a12 * a21));
double secondSolution = ((b2 * a11 - b1 * a21) / (a11 * a22 - a12 * a21));

さらに説明が必要な場合は、彼に聞いてみます。前もって感謝します!

4

4 に答える 4

103

引数の 1 つ (または両方) を除算演算子にキャストする必要がありますdouble

double firstSolution = (b1 * a22 - b2 * a12) / (double)(a11 * a22 - a12 * a21);

同じ計算を 2 回実行しているため、コードをリファクタリングすることをお勧めします。

double determinant = a11 * a22 - a12 * a21;
double firstSolution = (b1 * a22 - b2 * a12) / determinant;
double secondSolution = (b2 * a11 - b1 * a21) / determinant;

これは同じように機能しますが、double への暗黙のキャストが追加されています。intからへのこの変換は、拡張プリミティブ変換doubleの例です。

于 2012-11-06T14:19:19.373 に答える
46

double への変換は、int を double にキャストすることで実行できます。

次のようにこのメカニズムを使用して、int を double に変換できます。

int i = 3; // i is 3
double d = (double) i; // d = 3.0

代替 (Java の自動型認識を使用):

double d = 1.0 * i; // d = 3.0

これをコードに実装すると、次のようになります。

double firstSolution = ((double)(b1 * a22 - b2 * a12) / (double)(a11 * a22 - a12 * a21));
double secondSolution = ((double)(b2 * a11 - b1 * a21) / (double)(a11 * a22 - a12 * a21));

または、次のように、タイプ double (1.0) の hard-parameter を使用して Java を機能させることもできます。

double firstSolution = ((1.0 * (b1 * a22 - b2 * a12)) / (1.0 * (a11 * a22 - a12 * a21)));
double secondSolution = ((1.0 * (b2 * a11 - b1 * a21)) / (1.0 * (a11 * a22 - a12 * a21)));

幸運を。

于 2012-11-06T14:23:28.137 に答える
12

Integer変数をキャストするか、メソッドを呼び出してクラスを使用する必要があると思いますdoubleValue()

于 2012-11-06T14:19:42.393 に答える
5

他の人がすでに言っているようにキャストを使用するか、int変数の1つに1.0:を掛けます。

double firstSolution = ((1.0* b1 * a22 - b2 * a12) / (a11 * a22 - a12 * a21));
于 2012-11-06T14:21:06.120 に答える