1

我尝试用 2 来计算一个数字。我写道:

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

x,y是整数。

我收到此错误:

不能将类型“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并且您试图将其分配给distance具有int类型的变量 ( )。

将双精度浮点数(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 回答