我有以下代码行:
float top = shape.Y + (shape.Height / 2.0) - 4.5;
哪个因错误而失败'Can't cast double to float。Shape.Y 和 shape.height 都是浮点型。
是什么导致了这个错误,最好的方法是确保 top 是一个浮点数(因为我需要将它传递给另一个期望浮点数的函数。
我有以下代码行:
float top = shape.Y + (shape.Height / 2.0) - 4.5;
哪个因错误而失败'Can't cast double to float。Shape.Y 和 shape.height 都是浮点型。
是什么导致了这个错误,最好的方法是确保 top 是一个浮点数(因为我需要将它传递给另一个期望浮点数的函数。
尝试用 包裹您的数字f
,因为通常2.0
代表一个double
数字。float
您可以在此处阅读更多信息。
float top = shape.Y + (shape.Height / 2.0f) - 4.5f;
原因是你的文字2.0
和4.5
类型是double
.
然后在你的表情中
shape.Y + (shape.Height / 2.0) - 4.5
划分似乎在 afloat
和 a之间double
。但是有一个从to的隐式转换(另一个方向的转换不是隐式的),所以“扩大”到 a 。然后加上这个双倍,出于同样的原因,也扩大到一个。然后整个表达式得到 type 。float
double
Height
double
Y
Y
double
double
但是您将top
变量声明为 a float
,并且double
无法将表达式float
隐式转换为。
富士给出了解决方案:如果将文字写成2.0f
(或只是2f
)和4.5f
,那么加法、除法和差值将一直计算为float
s,无需转换。
(实际上,如果您将分母指定为2
,它将隐式转换int
为float
,但正如您现在所知道的那样,如果您将其包含在内,可能更容易看出意图f
。)