我试着用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);
发布于 2013-01-08 10:21:00
试着像这样;
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-08 10:18:19
我想distance
被声明为int
distance = (int)Math.Pow(xx, (double) 2.0);
发布于 2013-01-08 10:31:38
为什么会有这个错误?
因为Math.Pow返回双,所以您试图将其赋值给具有int类型的变量(distance
)。
当将双精度浮点数(双类型)转换为整数(int类型)时,您正在丢失信息。这就是为什么编译器不允许隐式转换,因此抛出上面发布的错误消息。在这种情况下,您必须告诉编译器您知道潜在的信息丢失,并通过应用显式强制转换来做到这一点:
int distance = (int)Math.Pow(xx, (double)2.0)
https://stackoverflow.com/questions/14221472
复制