2013-01-08 40 views
1

我尝试战俘一批具有2我写道:C# - 试图从双强制转换为int,但未能

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

xy是整数。

我收到此错误:

cannot implicitly convert type 'double' to 'int'. An explicit conversion exists (are you missing a cast?)

这是为什么错误?这两个参数都是double键入的。下面这段代码绘制

错误红线: Math.Pow(xx, (double) 2.0);

+5

什么是“距离”? – xxbbcc

+0

您的标题有误。你试图从'double'转换为'int',而不是相反。 –

+0

如果您不需要将'xy'转换为'double','int'可以隐式转换为'double'。你可以将'xy'右移到'Math.Pow'。你也不需要将'2.0'转换为'double'。在它们中带有小数的文字数字已经是'double'类型的。当然,这与答案没有关系。 – Servy

回答

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); 
+1

噢,该死的..我忘了我把距离设置为int><谢谢先生! – Billie

9

我猜distance被声明为int

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

2.0已经是Double。看起来像距离是int

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

Why is that error?

因为Math.Pow回报和你试图把它分配给具有INT类型的变量(distance)。

当转换的双精度浮点数(型)为整数(INT 类型)你丢失的信息。这就是编译器不允许隐式转换的原因,因此会抛出上面发布的错误消息。在这种情况下,您必须告诉编译器您意识到潜在的信息丢失,并通过应用显式强制转换来实现这一点:

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