C# - 尝试从double转换为int,但失败了

时间:2013-01-08 18:17:01

标签: c# casting

我尝试用2来表示数字。我写道:

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 个答案:

答案 0 :(得分:9)

我猜distance被声明为int

 distance = (int)Math.Pow(xx, (double) 2.0);

答案 1 :(得分:2)

  

为什么会出错?

因为Math.Pow返回 double ,并且您尝试将其分配给具有 int 类型的变量(distance)。

将双精度浮点数( double 类型)转换为整数( int 类型)时,您将丢失信息。这就是编译器不允许隐式转换的原因,因此会抛出您在上面发布的错误消息。在这种情况下,你必须告诉编译器你知道潜在的信息丢失,你可以通过应用显式转换来实现:

int distance = (int)Math.Pow(xx, (double)2.0)

答案 2 :(得分: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);

答案 3 :(得分:0)

2.0已经Double。似乎距离为int

 distance = (int)Math.Pow(xx, 2.0);