1

私は 2 で数値を pow しようとしました。私は書きました:

int xy = y - x;
double xx = (double)xy;
distance = Math.Pow(xx, (double) 2.0);

xy整数です。

このエラーが発生します:

タイプ 'double' を 'int' に暗黙的に変換することはできません。明示的な変換が存在します (キャストがありませんか?)

そのエラーはなぜですか?両方のパラメーターがdouble入力されます。

このコードの下に描かれたエラーの赤い線: Math.Pow(xx, (double) 2.0);

4

4 に答える 4

9

distanceは次のように宣言されていると思いますint

 distance = (int)Math.Pow(xx, (double) 2.0);
于 2013-01-08T18:18:19.937 に答える
2

そのエラーはなぜですか?

Math.Powはdoubleを返し、それをint型の変数 ( distance)に代入しようとしているためです。

倍精度浮動小数点数 ( double型) を整数 ( int型) に変換すると、情報が失われます。そのため、コンパイラは暗黙的な変換を許可しないため、上記で投稿したエラー メッセージがスローされます。この状況では、潜在的な情報損失を認識していることをコンパイラーに伝える必要があり、明示的なキャストを適用してそれを行います。

int distance = (int)Math.Pow(xx, (double)2.0)
于 2013-01-08T18:31:38.140 に答える
1

このようにしてみてください。

int xy = y - x;
double xx = (double)xy;
double distance = Math.Pow(xx, (double)2.0);

この場合はをMath.Pow返すためdoubleです。メタデータから;

public static double Pow(double x, double y);
于 2013-01-08T18:21:00.533 に答える
0

2.0はすでにDoubleです。距離はint

 distance = (int)Math.Pow(xx, 2.0);
于 2013-01-08T18:20:18.320 に答える