我尝试用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);
答案 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);